我正在做一个网站刮刀,让我在一个网站上的所有产品名称。当我试图定位产品的标题时,我总是遇到一个KeyError。你知道吗
HTML格式:
<url>
<loc>
https://shop.havenshop.ca/products/cassady-sunglasses-indigo-gunmetal
</loc>
<lastmod>2017-10-19T08:53:44-07:00</lastmod>
<changefreq>daily</changefreq>
<image:image>
<image:loc> https://cdn.shopify.com/s/files/1/0051/7042/products/Cassady_SunglassesIndigoGunmetal1.jpg?v=1436564480</image:loc>
<image:title>"Cassady" Sunglasses Indigo / Gunmetal</image:title>
</image:image>
</url>
Python代码:
session = requests.session()
sitemap = session.get(link)
data = sitemap.text
soup = BeautifulSoup(data, "lxml")
items = soup.find_all("url")
for i in range(len(items)):
for item in items[i]:
print items[i]["image:image"]["image:title"]
错误:
KeyError: 'image:title'
最好的选择是使用bs4解决方案:
只是一个观点:
如果只需要所有产品的名称,那么如果需要,还可以使用正则表达式:
输出:
那不是HTML,那是XML。您应该找到您的命名空间元素,而不是试图通过属性访问。这将赋予您价值:
完整示例:
相关问题 更多 >
编程相关推荐