【发布时间】:2021-10-07 05:09:08
【问题描述】:
url2 = 'https://www.newegg.ca/Desktop-Graphics-Cards/SubCategory/ID-48?Tid=7708'
# opening up connection, grabbing page
uclient = ureq(url2)
html = uclient.read()
uclient.close()
# html parsing
page_soup = soup(html, "html.parser")
#grabs each product
containers = page_soup.findAll("div",{"class":"item-container"})
print(containers[0].div.div.a.img["title"])
for container in containers:
brand = container.div.div.a.img["title"]
title_container = container.findAll("a", {"class":"item-title"})
product_name = title_container[0].text
shipping_container = container.findAll("li", {"class":"price-ship"})
shipping = shipping_container[0].text.strip()
print(brand)
print(product_name)
print(shipping)
问题出现在for循环brand = container.div.div.a.img["title"]
它给了我错误“NoneType”对象不可下标。奇怪的是我可以访问这个标题,甚至可以在循环之外打印它print(containers[0].div.div.a.img["title"])请帮我弄清楚这里发生了什么。谢谢,一切顺利!
【问题讨论】:
-
在没有运行代码的情况下,我的猜测是这个问题发生在第零个元素以外的元素上,换句话说,
containers[i]代表i != 0。检查containers中的所有元素是否实际上具有“结构”div.div.a.img["title"]。 -
在循环的哪个迭代中抛出该错误?
-
我使用
for number, container in enumerate(containers): print('---', number, '---') ...来查看哪个迭代出现问题,它给了我containers[15]的错误。您应该使用if/else检查container.div.div.a.img是否提供None并跳过此元素。
标签: python web-scraping