scrapy spider 的防御性网页抓取技术
Defensive web scraping techniques for scrapy spider
现在我已经进行了大约 3 个月的网络抓取,并且我注意到我的许多蜘蛛需要不断地维护,因为网站在变化。我使用 scrapy、python 和 crawlera 来抓取我的网站。例如,2 周前我创建了一个蜘蛛,由于网站将其元标记从单数更改为复数(因此位置变成了位置),我不得不重建它。这么小的变化应该不会真正扰乱我的蜘蛛,所以我想对我的 collections 前进采取更具防御性的方法。有没有人对网络抓取有任何建议以减少保姆?提前谢谢你!
因为你没有post任何代码,所以我只能给出一般性的建议。
看看是否有隐藏的 API 可以检索您要查找的数据。
在 Chrome 中加载页面。使用 F12
检查并在“网络”选项卡下查看。点击CTRL + F
,您可以搜索您在屏幕上看到的想要收集的文字。如果您在“网络”选项卡下找到任何包含 json 数据的文件,那将更加可靠,因为网页后端的更改频率低于前端。
选择器不那么具体。 您可以改为 #datatable > .row::text
而不是 body > .content > #datatable > .row::text
。这样你的蜘蛛就不太可能因为小的变化而崩溃。
使用 try except
处理错误 以便在您预期某些数据可能不一致时阻止整个解析函数结束。
现在我已经进行了大约 3 个月的网络抓取,并且我注意到我的许多蜘蛛需要不断地维护,因为网站在变化。我使用 scrapy、python 和 crawlera 来抓取我的网站。例如,2 周前我创建了一个蜘蛛,由于网站将其元标记从单数更改为复数(因此位置变成了位置),我不得不重建它。这么小的变化应该不会真正扰乱我的蜘蛛,所以我想对我的 collections 前进采取更具防御性的方法。有没有人对网络抓取有任何建议以减少保姆?提前谢谢你!
因为你没有post任何代码,所以我只能给出一般性的建议。
看看是否有隐藏的 API 可以检索您要查找的数据。 在 Chrome 中加载页面。使用
F12
检查并在“网络”选项卡下查看。点击CTRL + F
,您可以搜索您在屏幕上看到的想要收集的文字。如果您在“网络”选项卡下找到任何包含 json 数据的文件,那将更加可靠,因为网页后端的更改频率低于前端。选择器不那么具体。 您可以改为
#datatable > .row::text
而不是body > .content > #datatable > .row::text
。这样你的蜘蛛就不太可能因为小的变化而崩溃。使用
try except
处理错误 以便在您预期某些数据可能不一致时阻止整个解析函数结束。