我正在迭代一个.csv的合同,试图从网站中提取一个列。
我想从网页末尾的表格中抓取标有“商品说明”的列。但是,我无法弄清楚如何抓住列 - 只是行。
以下是我目前正在使用的代码
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
我希望最终的输出返回来自该列中所有行的文本,并在行之间返回回车。
有什么想法?
答案 0 :(得分: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
----