从settings开始
scrapy默认只处理200-300的状态码,当有特殊状态码出现的时候就需要自己将要处理的状态码添加进去,然后判断response.status
HTTPERROR_ALLOWED_CODES = [403]有些网站会检测出scrapy的cookie值,因此要禁用cookie,注意这个禁用的只是scrapy自己的cookie而不是设置的
COOKIES_ENABLED = False有些重定向挺烦人
REDIRECT_ENABLED = False
超时等待时间过长,会影响爬虫速度,可以根据实际情况调整超时时间以及是否重试
DOWNLOAD_TIMEOUT=300
RETRY_ENABLED 是否开启重试
RETRY_TIMES 重试次数
RETRY_HTTP_CODECS
对哪些状态码进行重试,默认是500,502,503,504,408
电脑cpu配置比较好的可以修改并发数量
CONCURRENT_REQUESTS = 32
设置爬虫暂停、恢复的状态保存
JOBDIR=filename
配置请求头的三个位置
spider中发送请求的时候,优先级最高
middleware中利用requests.headers.setdefault()循环便利便利一个字典设置的优先级次之
在settings中DEFAULT_REQUEST_HEADERS={}设置的优先级最低
运行爬虫时可以进行的操作
CLOSESPIDER_TIMEOUT
(秒)、CLOSESPIDER_ITEMCOUNT
、CLOSESPIDER_PAGECOUNT
、CLOSESPIDER_ERRORCOUNT
分别代表在指定时间过后、在抓取了指定数目的Item
之后、在收到了指定数目的响应之后、在发生了指定数目的错误之后就终止爬虫程序
scrapy crawl fast-s CLOSESPIDER_TIMEOUT=10
设置这个爬虫项目运行10s停止
scrapy crawl somespider -s JOBDIR=crawls/somespider-1
这个也可以让爬虫实现暂停和恢复,使用ctrl+c暂停,恢复仍然使用这句话