0

我希望你能帮助我。我正在尝试抓取一个包含 4500 个链接的网站,其中包含信息。所以结构是这样的:

第 1 层(只是不同的类别)
第 2 层(包含不同的主题)
第 3 层(包含主题信息)

所以我的脚本循环打开每个类别 - 然后逐个主题打开主题并从第 3 层提取所有信息。但是由于有 4500 个主题,我遇到的问题是有时会出现超时错误,之后我必须从头开始尝试(有时在 200 个主题之后,有时在 2200 个主题之后)。我的问题是我怎样才能以正确的方式做到这一点,所以如果它崩溃了,我可以继续下一个它之前崩溃的主题,而不是从头开始。我是 Ruby 和 Crawling 的新手,我将不胜感激每一个建议。

谢谢!

4

2 回答 2

1

Stack Overflow 上会定期弹出这类问题。在编写单页爬虫或全站点爬虫时,需要考虑很多事情。

有关详细信息,请参阅“使用 nokogiri 对站点的每个页面进行 DRY 搜索”和“有哪些好的基于 Ruby 的网络爬虫? ”和“创建网络爬虫时的关键考虑因素是什么? ”。这些涵盖了我在编写蜘蛛时所做的很多事情。

于 2013-06-13T20:25:05.283 回答
0

您绝对应该拆分解析器例程,并将临时数据同时保存到数据库中。

我的方法是:

  1. 爬行第 1 层以收集类别。将它们保存到临时数据库中。
  2. 使用数据库,爬取第 2 层以收集主题列表。将它们保存到数据库中。
  3. 使用数据库,爬取第 3 层以获取实际内容。将它们保存到数据库中,如果发生错误则跳过/重试。
于 2013-06-12T10:31:45.220 回答