希望你能帮助我。我正试图抓取一个网站,其中包含4500个链接的信息。结构是这样的:
一级(只是类别不同)
第二层(包含不同主题)
第三层(包含主题信息)
所以我的脚本在循环中打开每个类别-然后逐个主题打开主题并从第3层提取所有信息。但是由于有4500个主题,我有问题,我有时会有超时错误,之后我必须从头开始尝试(有时在200个主题之后,其他时间是在2200个主题之后)。我的问题是,我如何才能做到这一点正确的方式,所以如果它崩溃,我可以继续下一个主题,它崩溃之前,而不是从一开始。我是Ruby和crawl的新手,非常感谢每一个建议。
谢谢!
这类问题会定期出现在Stack Overflow上。在编写单页抓取器或整个站点抓取器时,有许多事情需要考虑。
请参阅"使用nokogiri DRY搜索网站的每个页面"one_answers"哪些是好的基于ruby的网络爬虫?"以及"创建网络爬虫时的关键考虑因素是什么?"了解更多信息。它们涵盖了我在编写蜘蛛时所做的许多事情。
您绝对应该拆分解析器例程,并同时将临时数据保存到DB中。
我的方法是:
- 抓取Tier 1收集类别。保存到临时数据库。
- 使用数据库,抓取第2层以收集主题列表。保存到DB。
- 使用DB,抓取Tier 3以获取实际内容。保存到DB,如果发生错误,跳过/重试。