我正在尝试学习如何抓取网站,因此不使用API。我正在尝试抓取eBay的网站,并且我的脚本运行了几分钟,但由于指出“ AttributeError:'NoneType'对象没有属性'text'”的错误而停止运行。我做了尽职调查,并在Google / StackOverflow帮助中进行了搜索,但找不到任何内容。该错误指向下面的代码,但我不知道如何解决它。
total_sold_price = soup.find('span', {'class': 'vi-qtyS-hot-red'}).text
if total_sold_price:
total_sold_price = soup.find('span', {'class': 'vi-qtyS-hot-red'}).text
else:
try:
total_sold_price = soup.find('a', {'class': 'vi-txt-underline'}).text
except Exception as e:
print(e)
total_sold_price = ""
整个代码:https://pastebin.com/xS4bAwZK
预先感谢,非常感谢。
答案 0 :(得分:2)
问题是soup.find('span', {'class': 'vi-qtyS-hot-red'})
返回None,然后您尝试提取文本.text
的None(因此出现错误消息)。您可以通过几种方法来处理它。我所做的只是绕一些逻辑:
此外,您还可以存储文本total_sold_price = soup.find('span', {'class': 'vi-qtyS-hot-red'}).text
,如果可以存储文本,则可以执行完全多余的操作。
最后,页面是动态的,因此您可能需要研究API或其他方式来访问数据。
但是对于您提供的代码,也许是这样的:
try:
total_sold_price = soup.find('span', {'class': 'vi-qtyS-hot-red'}).text
except Exception as e:
try:
total_sold_price = soup.find('a', {'class': 'vi-txt-underline'}).text
except Exception as e:
print(e)
total_sold_price = ""