我从 eBay 上抓取了这个表格,基本上,输出应该是这样的scraped_table = {'Condition': 'New', 'Brand': 'MyBrand', 'MPN': 'Does not apply', 'UPC': 'Does not apply'}但是,该表可能具有不同的值(例如,可能并不总是存在 UPC 或 MPN 值集,并且可能存在更多值)。我不知道如何才能刮掉这张桌子。我可以通过查找“table”元素来选择表,但如何循环遍历这些值并将其放入字典中?
1 回答
慕斯王
TA贡献1864条经验 获得超2个赞
如果表的结构是<td class="attrLabels"> ...Attribute... </td><td> ...Attribute value... </td>,您可以执行以下操作(txt是您的 HTML 片段):
from pprint import pprint
from bs4 import BeautifulSoup
soup = BeautifulSoup(txt, 'html.parser')
out = {}
for attr, txt in zip(soup.select('td.attrLabels'), soup.select('td.attrLabels + td')):
out[attr.get_text(strip=True)] = txt.get_text(strip=True).split(':')[0]
# pretty print to screen:
pprint(out)
印刷:
{'Brand:': 'MyBrand',
'Condition:': 'New',
'MPN:': 'Does Not Apply',
'UPC:': 'Does not apply'}
添加回答
举报
0/150
提交
取消