当前位置:嗨网首页>书籍在线阅读

08-爬取风格

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

7.2.5 爬取风格

Scrapy允许我们调整选择优先爬取页面的方式。可以在 DEPTH_LIMIT 设置中设定最大深度,该值为0时表示不限制。通过 DEPTH_PRIORITY 设置,可以基于请求的深度指定优先级。最值得注意的是,可以将该值设置为正数,以执行广度优先爬取,并将任务队列由LIFO(后入先出)转为FIFO(先入先出):

DEPTH_PRIORITY = 1
SCHEDULER_DISK_QUEUE = 'scrapy.squeue.PickleFifoDiskQueue'
SCHEDULER_MEMORY_QUEUE = 'scrapy.squeue.FifoMemoryQueue'

在爬取时进行这些设置非常有用,比如,在一个新闻门户网站中,最近的新闻更应该接近首页,并且每个新闻页都有到其他相关新闻的链接。Scrapy的默认行为是对首页的前几个新闻报道进行尽可能深地爬取,之后才会继续爬取接下来的头版新闻。而广度优先的顺序则是首先爬取最顶层的新闻,之后才会进一步深入,当结合 DEPTH_LIMIT 设置时,比如设为3,可以让你快速浏览门户网站中最近的新闻。

网站在其根目录下使用Web标准的 robots.txt 文件,声明它们允许的爬取策略,以及不希望被访问的网站结构。如果将 ROBOTSTXT_OBEY 设置为 True ,Scrapy将会遵守该约定。如果启用了该设置,请在调试时记住该点,以防发现任何意外的行为。

CookiesMiddleware 显然包含了和 cookie 相关的所有操作,其中包括会话跟踪、准许登录等。如果你想拥有更“私密”的爬取,可以通过将 COOKIES_ENABLED 设置 False 以禁用。禁用cookie还会轻微降低你使用的带宽,并且可能会对你的爬取操作有一点提速,当然它会依赖于你爬取的网站。与 CookiesMiddleware 类似, REFERER_ENABLED 的默认设置是 True ,即启用了用于填充Referer头的 RefererMiddleware 。可以使用 DEFAULT_REQUEST_HEADERS 自定义头部。你可能会发现该设置对于某些奇怪的网站很有用,在这些网站中只有包含了特定请求头的请求才不会被禁止。最后,自动生成的 settings.py 文件推荐我们设置 USER_AGENT 。该设置的默认值是Scrapy的版本,而我们需要将其修改为能够让网站拥有者联系到我们的信息。