134 scrapy框架详解, 配置文件的设置, 请求传参, 代理池, 中间件的设置

主要内容:

1 scrapy框架的详解:https://blog.csdn.net/qq_37143745/article/details/80996707

  a : 各部分的功能:

    Spiders(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器)
    Engine(引擎):负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。
    Scheduler(调度器):它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。
    Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理
    ItemPipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方.
    Downloader Middlewares(下载中间件):你可以当作是一个可以自定义扩展下载功能的组件。
    Spider Middlewares(Spider中间件):你可以理解为是一个可以自定扩展和操作引擎和Spider中间
  b : 代码执行流程:

    SPIDERS的yeild将request发送给ENGIN
    ENGINE对request不做任何处理发送给SCHEDULER
    SCHEDULER( url调度器),生成request交给ENGIN
    ENGINE拿到request,通过MIDDLEWARE进行层层过滤发送给DOWNLOADER
    DOWNLOADER在网上获取到response数据之后,又经过MIDDLEWARE进行层层过滤发送给ENGIN
    ENGINE获取到response数据之后,返回给SPIDERS,SPIDERS的parse()方法对获取到的response数据进行处理,解析出items或者requests
    将解析出来的items或者requests发送给ENGIN
    ENGIN获取到items或者requests,将items发送给ITEMPIPELINES,将requests发送给SCHEDULER
2 请求传参(meta):  yield scapy.Request(url=url, callback=self.parse, meta={"item",item})

  需求: 将不再同一个页面的数据写在一起, 需要用到请求传参

  代码: 见第六天

3  配置文件的设置:

# 增加并发:
#     默认scrapy开启的并发线程为32个,可以适当进行增加。在settings配置文件中修改CONCURRENT_REQUESTS = 100值为100,并发设置成了为100。
#
# 降低日志级别:
#     在运行scrapy时,会有大量日志信息的输出,为了减少CPU的使用率。可以设置log输出信息为INFO或者ERROR即可。在配置文件中编写:LOG_LEVEL = ‘INFO’
#
# 禁止cookie:
#     如果不是真的需要cookie,则在scrapy爬取数据时可以禁止cookie从而减少CPU的使用率,提升爬取效率。在配置文件中编写:COOKIES_ENABLED = False
#
# 禁止重试:
#     对失败的HTTP进行重新请求(重试)会减慢爬取速度,因此可以禁止重试。在配置文件中编写:RETRY_ENABLED = False
#
# 减少下载超时:
#     如果对一个非常慢的链接进行爬取,减少下载超时可以能让卡住的链接快速被放弃,从而提升效率。在配置文件中进行编写:DOWNLOAD_TIMEOUT = 10 超时时间为10s

CONCURRENT_REQUESTS = 10
# LOG_LEVEL = 'ERROR'
COOKIES_ENABLED = False
RETRY_ENABLED = False
# DOWNLOAD_TIMEOUT = 5

4 代理池:在中间件中设置

  用处: 当请求次数过多, ip被禁掉, 或者不想被别人看到自己真实的ip, 

  代码: 见第六天爬虫

  

原文地址:https://www.cnblogs.com/gyh412724/p/10269130.html