2016-08-10 9 views
2

私は、.csvの契約を繰り返して、Webサイトから単一の列を抽出しようとしています。BeautifulSoupとPythonを使用して不良な表の1つの列を取得

ここでは、ウェブサイトの例です:https://www.austintexas.gov/financeonline/contract_catalog/OCCViewMA.cfm?cd=CT&dd=6100&id=13060600641

私は、Webページの最後にある表から「商品の説明」という列をつかむしたいです。しかし、私は列をつかむ方法を理解することはできません - ただ行。ここで

私は現在

def scraper(first, second, third): 
    url = "https://www.austintexas.gov/financeonline/contract_catalog/OCCViewMA.cfm?cd=%s&dd=%d&id=%s" % (first, second, third) 
    soup = BeautifulSoup(urllib2.urlopen(url).read()) 
    foundtext = soup.find('td',text="Commodity Description") 
    table = foundtext.findPrevious('table') 
    rows = table.findAll('tr') 
    second_column = [] 
    for row in rows: 
     print row.contents 

で働いているコード私は、最終的な出力リターンが行の間のリターンキャリッジと、その列のすべての行のテキストになりたいです。

どのような考えですか?

答えて

2

見つかったすべての行について、すべてのtdの要素を検索し、インデックスが希望するものを得る:

table = soup.find('td', text="Commodity Description").find_parent("table") 
for row in table.select("tr")[2:]: # skipping the header rows 
    cell = row.find_all("td")[1] 
    print(cell.get_text()) 
    print("----") 

版画:

WATERLINE REPLACEMENTCONSTRUCTION, PIPELINEPER YUEJIAO LIU, ADD THE REMAINING FUNDS BACK INTO THIS FUNDING LINE // PEMBERTON HEIGHTS PHASE III PROJECT ++ ENC. $53,209.97 
---- 
WATERLINE REPLACEMENTCONSTRUCTION, PIPELINEPEMBERTON HEIGHTS PHASE III PROJECT 
---- 
WATERLINE REPLACEMENTCONSTRUCTION, PIPELINEPEMBERTON HEIGHTS PHASE III PROJECT 
---- 
+0

ブリリアント!本当にありがとう – Parseltongue

関連する問題