AttributeError:“NoneType”对象没有属性“div”

2024-03-29 13:10:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到了一个像标题这样的错误。在

Traceback (most recent call last):
  File "C:/2.py", line 40, in <module>
reviews.append(reviews_info(div))
  File "C:/2.py", line 21, in reviews_info
    review_text = div.find("div", "review-content").div.text 
AttributeError: 'NoneType' object has no attribute 'div'

我想我可能输入了错误的元素。在

我不是从头开始写代码的。我已经应用到以前爬网其他网站的代码。在

我怎样才能改变元素并转动它?? 我觉得我写得很好。但是有一个错误。在

ps恐怕会有评论使用api。但这是使用它的方式,因为它是有限的。在

^{pr2}$

Tags: 代码textinpydivinfo元素标题
1条回答
网友
1楼 · 发布于 2024-03-29 13:10:34

在for循环中,已经向reviews_info传递class属性为“review content”的div。所以你最好去掉.find("div", "review-content")部分。这可能是导致错误的原因。在

显然,你需要复习的日期和星星。在

与使用div.div.text来提取日期不同,您可以使用包含日期的span标记,如下所示:

review_date = div.span.next_element.strip()

用于提取评级的表达式将引发另一个错误。在

“i-stars i-stars常规-1评级-大”适用于1星评级。所以4星评级应该是div和{},以此类推。在

因此,您可以使用regex过滤包含评级的div

^{pr2}$

将这两部分放在一起,您的reviews_info函数中需要更改的两行代码是:

review_date = div.span.next_element.strip()
review_stars = div.find('div', {'class': re.compile(r'i-stars')}).img['alt']

做出这些改变,你就可以走了。在

额外信息:

我没有使用div.span.text.strip()来提取文本的原因是,如果评论在发布后被更新,span标签也包含了这个细节。使用span.text也提取了这些信息。因此,我选择了next_element。在

免责声明:我仅在第三页测试了它,对我很有用。我不确定其他页面是否可以正常工作。在

相关问题 更多 >