为什么我在此网页抓取中遇到属性错误?

问题描述 投票:0回答:1

代码链接:https://github.com/luisfowler02/malproject

我正在学习网络抓取,我正在制作一个程序,从 myanimelist.net 抓取顶级动漫,然后将其存储在 mongoDB 中。存储工作正常,并且在大多数情况下抓取也是如此,但是在从大约 609 个动漫中准确抓取了 100-300 个动漫之后(以 8+ 的分数抓取所有动画),我开始出现属性错误,无论是来自标题、分数或排名。

回溯(最近一次调用最后一次): 文件“/home/luisfowler/Desktop/mal_project/anime_database.py”,第 33 行,位于 Anime_list = Anime.scrape_from_myanimelist() 文件“/home/luisfowler/Desktop/mal_project/anime.py”,第 55 行,在 scrape_from_myanimelist 中 分数 = soup.find(itemprop=' ratingValue').text AttributeError:“NoneType”对象没有属性“text”

本质上,它从https://myanimelist.net/topanime.php中抓取每个动漫单独页面的所有链接,然后转到每个链接并抓取我想要的数据。然后,当它从第一页上的 50 个链接中抓取时,它应该继续分页前进,直到出现分数低于 8 的动画。所有抓取的动画都将变成对象,然后将这些对象存储在mongoDB。奇怪的是,它能够正确地抓取一段时间,然后就开始给出上面的错误。

python web-scraping beautifulsoup attributeerror
1个回答
0
投票

我不确定,但是当 soup 找不到相应的元素时,我得到这个错误,在本例中是: itemprop=' ratingValue' ,它给出了一个 null 对象,原因可能是 DOM 没有完全加载(您可以使用 time.sleep() 或 WebDriverWait() 减慢抓取速度),或者 itemprop 需要一些交互(例如单击某个按钮或某个弹出窗口来显示...)或者该项目将不显示(至少在某些情况下评级始终存在),您可以检查该项目的 CSS 选择器(可能是 id 或 class)是否在站点中找到。

© www.soinside.com 2019 - 2024. All rights reserved.