python爬虫---scrapy框架爬取图片,scrapy手动发送请求,发送post请求,提升爬取效率,请求传参(meta),五大核心组件,中间件

python爬虫---scrapy框架爬取图片,scrapy手动发送请求,发送post请求,提升爬取效率,请求传参(meta),五大核心组件,中间件,第1张

概述# settings 配置 UAUSER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36' 一丶scrapy的图片数据爬取(流数据的爬取) ? scrapy中封装好了一个管道类(ImagesPipe
#  settings 配置 UAUSER_AGENT = 'Mozilla/5.0 (windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/73.0.3683.86 Safari/537.36'
一丶scrapy的图片数据爬取(流数据的爬取)

? scrapy中封装好了一个管道类(ImagesPipeline),基于该管道类可以实现图片资源的请求和持久化存储

编码流程: 爬虫文件中解析出图片的地址 将图片地址封装到item中且提交给管道 管道文件中自定义一个管道类(父类:ImagesPipeline) 重写三个方法: def get_media_requests(self,item,info): def file_path(self,request,response=None,info=None): def item_completed(self,result,info): 在配置文件中开启管道且加上IMAGES_STORE = ‘./imglibs‘ 在scrapy中如何进行手动请求发送

? yIEld scrapy.Request(url,callback)

在scrapy中如何进行post请求的发送?

? yIEld scrapy.FormRequest(url,callback,formdata)

如何对起始的url进行post请求的发送? 重写父类的start_requests(self):
def start_requests(self):
for url in self.start_urls:
yIEld scrapy.FormRequest(url,callback=self.parse,formdata={}) 在scrapy中如何提升爬取数据的效率?
增加并发:    默认scrapy开启的并发线程为32个,可以适当进行增加。在settings配置文件中修改CONCURRENT_REQUESTS = 100值为100,并发设置成了为100。降低日志级别:    在运行scrapy时,会有大量日志信息的输出,为了减少cpu的使用率。可以设置log输出信息为INFO或者ERROR即可。在配置文件中编写:LOG_LEVEL = ‘ERROR’禁止cookie:    如果不是真的需要cookie,则在scrapy爬取数据时可以禁止cookie从而减少cpu的使用率,提升爬取效率。在配置文件中编写:cookieS_ENABLED = False禁止重试:    对失败的http进行重新请求(重试)会减慢爬取速度,因此可以禁止重试。在配置文件中编写:RETRY_ENABLED = False减少下载超时:    如果对一个非常慢的链接进行爬取,减少下载超时可以能让卡住的链接快速被放弃,从而提升效率。在配置文件中进行编写:DOWNLOAD_TIMEOUT = 1 超时时间为10s
请求传参(深度爬取) 深度爬取: 爬取的数据没有存在同一张页面中。 如何实现请求传参 Request(url,callback,Meta={}):可以将Meta字典传递给callback callback接收item:response.Meta scrapy的五大核心组件
引擎(Scrapy)  用来处理整个系统的数据流处理,触发事务(框架核心)调度器(Scheduler)  用来接受引擎发过来的请求,压入队列中,并在引擎再次请求的时候返回. 可以想像成一个URL(抓取网页的网址或者说是链接)的优先队列,由它来决定下一个要抓取的网址是什么,同时去除重复的网址下载器(Downloader)  用于下载网页内容,并将网页内容返回给蜘蛛(Scrapy下载器是建立在twisted这个高效的异步模型上的)爬虫(SpIDers)  爬虫是主要干活的,用于从特定的网页中提取自己需要的信息,即所谓的实体(Item)。用户也可以从中提取出链接,让Scrapy继续抓取下一个页面项目管道(Pipeline)  负责处理爬虫从网页中抽取的实体,主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。当页面被爬虫解析后,将被发送到项目管道,并经过几个特定的次序处理数据。
scrapy的中间件 有哪些中间件。 下载中间件(推荐) 爬虫中间件 下载中间件的作用 批量拦截所有的请求和响应 为什么拦截请求 篡改请求的头信息(UA) request.headers[‘User-Agent‘] = ‘xxxxx‘ 代理 request.Meta[‘proxy‘] = ‘http://ip:port‘ 为什么拦截响应 篡改响应数据 篡改响应对象(推荐) 项目: 网易新闻(国内,国际,军事,航空,无人机)新闻数据的标题和内容 分析: 1.每一个板块下对应的新闻数据都是动态加载出来的 2.会对五个板块的响应数据进行数据解析,但是板块对应的响应对象是不包含动态加载的新闻数据,目前
获取的每一个板块对应的响应对象是不满足需求的响应对象!!! 3.将不满足需求的5个响应对象(工程中一共会有1+5+n),修改成满足需求。 找到指定的5个不满足需求的响应对象(中间件) 你的redis如果不可以写入字典 pip install -U redis==2.10.6 总结

以上是内存溢出为你收集整理的python爬虫---scrapy框架爬取图片,scrapy手动发送请求,发送post请求,提升爬取效率,请求传参(meta),五大核心组件,中间件全部内容,希望文章能够帮你解决python爬虫---scrapy框架爬取图片,scrapy手动发送请求,发送post请求,提升爬取效率,请求传参(meta),五大核心组件,中间件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1190571.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存