![](https://img-blog.csdnimg.cn/20201225161524737.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
scrapy
scrapy学习记录
缦旋律
沉迷磕CP并努力敲代码的小陈
展开
-
scrapy:中间件
scrapy的中间件可分为爬虫中间件和下载中间件,本文主要介绍下载中间件。下载中间件位于Downloader和engine之间,主要用于拦截请求和拦截响应。1.拦截请求作用:进行UA伪装、代理IP步骤:在middlewares.py 文件中,重写DownloaderMiddleware类中的process_request函数❤️ :对发起的每个请求,重UA池中选择任意一个进行UA伪装class MiddleDownloaderMiddleware: #UA池 user_agent_原创 2020-12-27 21:44:15 · 7522 阅读 · 0 评论 -
scrapy:ImagesPipeline
作用:只需要将img的src属性值从原网页中解析出,封装到item、并提交给管道,管道就会自动对图片的src发送请求、获取图片的二进制数据,并进行持久化存储步骤:1.爬虫文件中解析出图片的src,封装到item中,把item提交给管道2.pipelines.py中重新定义一个管道类(原来的要删掉),该类继承自ImagesPipeline在新定义的管道类中要重写三个函数:a. get_media_requests(self, item, info) 用于对src发送请求b. file_pa..原创 2020-12-27 20:45:29 · 243 阅读 · 3 评论 -
scrapy:请求传参
使用场景:需要的数据不能在同一个parse函数中获得(比如在起始页面通过parse1函数拿到了压缩包名称和压缩包详细信息的detail_url,要对detail_url发起请求并通过parse2函数解析才能获得压缩包的下载链接download_url)方法:通过scrapy.Request对detail_url发送请求时,添加一个meta参数:meta={‘item’:item};将meta传递给Request对应的回调函数(即parse2函数)爬虫文件中的代码:import scra..原创 2020-12-27 18:36:45 · 1326 阅读 · 0 评论 -
scrapy:基于pipeline的多平台持久化存储
需求:将爬取到的数据一份存储到本地一份存储到数据库(对应project:qiubaipro)思路:开启两个管道,pipelines.py中,一个管道负责将数据存储到一个平台(载体),多个管道就可存储到多个平台。PS:1.有多个管道的情况下,爬虫文件将封装好的item提交给管道时,会提交给优先级最高的管道;该管道处理完成后,return item,下一个管道才会收到item。因此每个管道必须要return item!!!!2. 结束时,先执行优先级较低管道的close_spider爬虫文件中的.原创 2020-12-25 16:56:57 · 184 阅读 · 0 评论 -
scrapy:常用命令and五大组件
1.常用命令scrapy startproject 项目名称:在当前目录下创建一个指定名称的文件夹,里面放置了scrapy框架除爬虫文件以外的所有文件:创建好的文件夹内容如图:scrapy genspider 爬虫文件名 网址:创建爬虫文件,这个网址可以先随便填,之后在爬虫文件中修改。PS:一定要先进入刚刚创建的那个项目文件夹中!!!!scrapy crawl 爬虫文件名:执行爬虫,开始爬取数据2.scrapy五大组件先解释一下每个步骤是干什么的:①:spider将start_url原创 2020-12-25 15:53:21 · 127 阅读 · 0 评论