Python 在一个div中解析表很漂亮
我正在使用bs4从易趣上的物品中提取信息以获取产品的详细信息,我正在尝试以物品为例生成一个结果,我觉得最准确的代码如下:Python 在一个div中解析表很漂亮,python,beautifulsoup,Python,Beautifulsoup,我正在使用bs4从易趣上的物品中提取信息以获取产品的详细信息,我正在尝试以物品为例生成一个结果,我觉得最准确的代码如下: from urllib.request import urlopen as uReq from bs4 import BeautifulSoup as soup uClient = uReq(my_url) page_html = uClient.read() uClient.close() page_soup = soup(page_html, 'html.parser'
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()
page_soup = soup(page_html, 'html.parser')
attributes = page_soup.findAll("div",{'class':'itemAttr'})
attribute = attributes [0]
row = attribute.tr.contents
其思想是,提取网页,解析适当的div(itemattr),并尝试使用tr/td标记或其组合从这里提取内容。上面并没有包括我这项工作的众多变体,但我可以看到,我遇到了解析的这个障碍,生成了一个列表(有一个项目),在这个列表中导航遇到了障碍。我确实看过直接解析表,但不幸的是他们没有给它一个类。我想知道,对于如何从div标记中提取一个表,或者从parse中创建一个新的html子集(而不是列表?),是否有什么想法。或者告诉我我是不是疯了,该上床睡觉了。我认为你目前的工作很有意义,干得好 要继续前进,我们可以利用eBay页面上
td
元素的结构,以及它们分为两个元素,标题上有一个attrLabels
类来提取特定数据
这将按照页面上显示的顺序显示数据:
tds = attribute.findAll("td")
ordered_data = []
for i in range(0, len(tds), 2):
if tds[i].get('class') == ['attrLabels']:
key = tds[i].text.strip().strip(":")
value = tds[i+1].span.text
ordered_data.append({ key: value })
这将为您提供相同的功能,但在具有键值对的dict中,您可以轻松访问每个属性:
tds = attribute.findAll("td")
searchable_data = {}
for i in range(0, len(tds), 2):
if tds[i].get('class') == ['attrLabels']:
key = tds[i].text.strip().strip(":")
value = tds[i+1].span.text
searchable_data[key] = value
先生,你是人类中的神,这是完美的。我要打破这个,然后再打破它来掌握窍门。非常感谢!