下载中间件

1.创建
2.继承的类
3.不能用parse方法
4.parse_start_url

反爬措施:

  • 基于请求头的反爬(合理构建请求头)(请求头参数(user-agent,referer,cookie),常见的状态码,常见的请求方式)
  • 基于cookie的反爬(cookie池,文件存储,数据库存储)(如何获取cookie,如何验证cookie,怎么进行模拟登陆)
  • 基于IP的反爬(代理,代理的原理?代理如何获取?代理怎么检测?代理池)
  • 基于动态加载的网页(ajax,js,jq)(selenium?无头和有头浏览器?selenium方法)
  • 关于数据加密?(js,app,web网页)

下载中间件:处于引擎和下载器之间

   @classmethod
def from_crawler(cls, crawler):
  
def process_request(self, request, spider):
  所有的request请求在交给下载器之前都会经过这个方法
    # - return None: continue processing this request
    # - or return a Response object
    # - or return a Request object
    # - or raise IgnoreRequest: process_exception() methods of
    #   installed downloader middleware will be called

def process_response(self, request, response, spider):
     所有的相应结果会经过这个方法
    # - return a Response object
    # - return a Request object
    # - or raise IgnoreRequest

def process_exception(self, request, exception, spider):
    处理请求的异常错误
    # - return None: continue processing this exception
    # - return a Response object: stops process_exception() chain
    # - return a Request object: stops process_exception() chain
def spider_opened(self, spider):
    spider.logger.info('Spider opened: %s' % spider.name)

关于爬虫断点爬取:

  scrapy    crawl    爬虫名称     -s     JOBDIR=crawls/爬虫名称
    requests.queue:保存请求的任务队列
   requests.seen:保存的指纹
  spider.status:爬虫运行状态
  scrapy settings.py设置文件(相关参数)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容