#piplines实现异步抓取图片##post请求#
1.scrapy图片类抓取
1.1导入下载图片专用管道类
打开scrapy项目中piplines文件,导入模块ImagesPipeline
该模块需安装模块 pip install pillow==9.4.0(下载9.4.0版本)
1.2管道类需继承ImagesPipeline
且不再使用原process_item函数,而是使用get_midia_requests(),这个方法专门获取媒体的请求
1.3用下载器下载图片
这一步请求下载器下载图片,我们把链接放进去即可
1.4file_path设置图片的名字和保存地址
名称可直接在file_path下定义,文件夹地址需在settings中添加
1.5爬虫代码:获取并解析网页数据
另,settings文件设置同scrapy实战笔记(二)——日志文件等级,君子协议,user-agent
2.scrapy抓取动态请求(eg.百度翻译)
post请求需额外提交表单
2.1添加start_requests
post请求时,start_urls基本不用,里面填写的内容不重要,我们需额外添加start_requests(),该方法意为从这里开始执行
scrapy.FormRequest()提交表单并发起请求
2.2添加伪装
响应的数据是无法解析的,我们需要添加伪装。post请求单独添加一个USER-AGENT不行,这里settings中的USER-AGENT可以不用了,USER-AGENT是对全局的请求做修改。这里,我们要把全部的(请求标头)Headers信息加进来。
2.2.1头部信息处理技巧(自己试了下,没有成功,不知道什么原因)
(1)Pycharm中建立一个text文件,把headers信息copy进去
(2)ctrl+R,用正则做一个匹配 (.*?): (.*)
文本中有空格,故冒号后面有空格。若所有信息被框起来,则说明全部信息都被匹配到了
(3)替换 ‘$1':'$2',
(4)点击REPLACEALL
2.2.2添加请求标头信息
settings中修改
2.2.3为使上述添加的cookies生效,我们需关闭scrapy本身封装的cookie
settings中修改