我從 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
提交
取消