在爬取大型站点的时候,或遇到某些特殊情况的时候,往往需要赞同爬虫,并稍后再接着之前执行到的位置继续爬取,而不是每次出问题都从头开始。
scrapy的暂停与重启的设置很简单:
1.创建工作目录
2.用以下命令启动爬虫
上述命令中:
somespider : 启动的爬虫名
crawls/somespider-1 :你创建的工作目录+爬虫序号
后面的somespider-1是用来区分不同的爬虫的,因为官方文档提到了:
3.暂停爬虫
以上两步,爬虫便可以能暂停的状态运行,当你需要暂停的时候,只需在运行窗口发送暂停命令即可:
ctrl + c
tips:
4.暂停后的重启
输入与启动相同的命令即可:
然后爬虫就会接着上一次暂停后的位置继续运行。
完。
需要先导入random模块
然后在meddlewares.py中创建RandomUserAgentMiddleWare()类.重写scrapy内置的UserAgentMiddleware.
需要先导入UserAgent
from fake_useragen timport UserAgent
需要在settings.py中设置
# 用于配置随机user-agent的类型,如果值是random,表示任意随机一个;如果配置的是chrome,则只随机chrome中的user-agent.
RANDOM_UA_TYPE ='chrome'
最后同上面一样需要在settings.py中设置DOWNLOAD_MIDDLEWARES,将系统默认的随机请求头给禁掉,再添加我们自己定义的随机UserAgent
1.win10 下 win + r 打开cmd 切换新项目的目录2.新建scrapy项目的命令:
可以利用pycharm 打开项目文件夹编辑项目
3.items.py
声明爬取的字段
4.新建scrapy 爬虫
用命令 scrapy genspider doubanmovie "movie.douban.com" 创建爬虫。
5.运行爬虫
5.1 创建运行脚本
(一)、在 scrapy.cfg 同级目录下创建 pycharm 调试脚本 run.py,避免每次运行爬虫输入密码,内容如下:
6.修改robottxt协议
修改 settings 中的 ROBOTSTXT_OBEY = True 参数为 False,因为默认为 True,就是要遵守 robots.txt 的规则, robots.txt 是遵循 Robot协议 的一个文件,它保存在网站的服务器中,它的作用是,告诉搜索引擎爬虫,本网站哪些目录下的网页不希望你进行爬取收录。在 Scrapy 启动后,会在第一时间访问网站的 robots.txt 文件,然后决定该网站的爬取范围。查看 robots.txt 可以直接网址后接 robots.txt 即可。
一般构建爬虫系统,建议自己编写Item Pipeline,就可以在open(path)选择自己的保存路径
参考: # scrapy爬虫事件以及数据保存为txt,json,mysql
7.1保存为json格式时出现乱码的解决方式:
scrapy抓取豆瓣书籍保存json文件乱码问题
中文默认是Unicode,如:
\u5317\u4eac\u5927\u5b66
在setting文件settings.py中设置:
就可以解决了
第二种解决办法
或在cmd中传入 -s FEED_EXPORT_ENCODING='utf-8'
参考: https://www.cnblogs.com/tinghai8/p/9700300.html
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)