下载中间件

2019-01-07  本文已影响0人  小袋鼠cf

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设置文件(相关参数)
上一篇下一篇

猜你喜欢

热点阅读