python BeautifulSoup解析表

标签 python beautifulsoup

我正在学习 python requests 和 BeautifulSoup。作为练习,我选择编写一个快速的 NYC parking 罚单解析器。我能够得到一个非常难看的 html 响应。我需要获取 lineItemsTable 并解析所有票证。

您可以通过以下方式复制该页面:https://paydirect.link2gov.com/NYCParking-Plate/ItemSearch 并输入 NY 车牌 T630134C

soup = BeautifulSoup(plateRequest.text)
#print(soup.prettify())
#print soup.find_all('tr')

table = soup.find("table", { "class" : "lineItemsTable" })
for row in table.findAll("tr"):
    cells = row.findAll("td")
    print cells

有人可以帮帮我吗?简单地查找所有 tr 并没有让我到任何地方。

最佳答案

给你:

data = []
table = soup.find('table', attrs={'class':'lineItemsTable'})
table_body = table.find('tbody')

rows = table_body.find_all('tr')
for row in rows:
    cols = row.find_all('td')
    cols = [ele.text.strip() for ele in cols]
    data.append([ele for ele in cols if ele]) # Get rid of empty values

这给了你:

[ [u'1359711259', u'SRF', u'08/05/2013', u'5310 4 AVE', u'K', u'19', u'125.00', u'$'], 
  [u'7086775850', u'PAS', u'12/14/2013', u'3908 6th Ave', u'K', u'40', u'125.00', u'$'], 
  [u'7355010165', u'OMT', u'12/14/2013', u'3908 6th Ave', u'K', u'40', u'145.00', u'$'], 
  [u'4002488755', u'OMT', u'02/12/2014', u'NB 1ST AVE @ E 23RD ST', u'5', u'115.00', u'$'], 
  [u'7913806837', u'OMT', u'03/03/2014', u'5015 4th Ave', u'K', u'46', u'115.00', u'$'], 
  [u'5080015366', u'OMT', u'03/10/2014', u'EB 65TH ST @ 16TH AV E', u'7', u'50.00', u'$'], 
  [u'7208770670', u'OMT', u'04/08/2014', u'333 15th St', u'K', u'70', u'65.00', u'$'], 
  [u'$0.00\n\n\nPayment Amount:']
]

需要注意的几点:

  • 上面输出的最后一行,Payment Amount 不是一部分 table ,但这就是 table 的布局方式。你可以过滤一下 检查列表的长度是否小于 7。
  • 每一行的最后一列必须单独处理,因为它是一个输入文本框。

关于python BeautifulSoup解析表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23377533/

相关文章:

Python bool 方法命名约定

python - 有没有一种方法可以将两个(或更多)数据帧写入一个 Excel 电子表格?

python - Python中科学记数法中的指数数字

python - 使用 python requests/beautifulsoup 从库中检索 .CSV

python - Beautiful Soup - 选择没有类的下一个跨度元素的文本

python noob 在发送谷歌语音文本时遇到问题

Python:BeautifulSoup - 从类的名称中获取属性值

python - 在 python csv 文件中写一个列表,每个列表一个新行

python - 如何用 python beautifulsoup 解析 HTML 标签数组

python - 类型错误 : run() missing 1 required positional argument: 'fetches' on Session. 运行()