scrapy命令行工具(command line tools)

查看scrapy所有可用的命令

1
scrapy -h

查看某个命令具体用法,以startproject为例子

1
scrapy startproject -h

创建爬虫项目

1
scrapy startproject myproject

创建一个新的spider

1
scrapy genspider mydomain mydomain.com

启动终端

1
2
scrapy shell <url>
如: scrapy shell https://www.baidu.com

针对通用爬虫设定的一些建议

增加并发
并发是指同时处理的 request 的数量。其有全局限制和局部(每个网站)的限制。
Scrapy 默认的全局并发限制对同时爬取大量网站的情况并不适用,因此需要增加这个值。
增加全局并发数
CONCURRENT_REQUESTS = 100
设置 Log 级别:
LOG_LEVEL = ‘INFO’
禁止 cookies,禁止 cookies 能减少 CPU 使用率及 Scrapy 爬虫在内存中记录的踪迹,提高性能。
COOKIES_ENABLED = False
禁止重试,当站点响应很慢(甚至失败)时, 访问这样的站点会造成超时并重试多次。这是不必要的,同时也占用了爬虫爬取其他站点的能力。
RETRY_ENABLED = False
减小下载超时,减小下载超时能让卡住的连接能被快速的放弃并解放处理其他站点的能力。
DOWNLOAD_TIMEOUT = 15
禁止重定向,当进行通用爬取时,一般的做法是保存重定向的地址,并在之后的爬取进行解析。否则重定向循环可能会导致爬虫在某个站点耗费过多资源。
REDIRECT_ENABLED = False
启用 “Ajax Crawlable Pages” 爬取,有些站点声明其为 ajax crawlabl。这意味着该网站提供了原本只有 ajax 获取到的数据的纯 HTML 版本。网站通过两种方法声明:
(1)在 url 中使用#! - 这是默认的方式;
(2)使用特殊的 meta 标签 - 这在”main”, “index” 页面中使用。
Scrapy 自动解决(1);解决(2)您需要启用 AjaxCrawlMiddleware:
AJAXCRAWL_ENABLED = True