爬虫-day07

上篇

1. scrapy 模拟登录[重点]

scrapy 请求直接携带 cookie

爬虫的父类中有一个 start_requests 方法,该方法使用起始 url 地址构造请求对象给引擎,但是请求时不会携带 cookie 数据。

如果爬虫的起始 url 地址是登录之后才能访问的地址,则需要重写 start_requests 方法。

在这里插入图片描述

scrapy 发送 POST 请求

在这里插入图片描述

scrapy 自动定位表单构造请求对象

在这里插入图片描述

2. scrapy 数据管道[重点]

在这里插入图片描述
在这里插入图片描述

数据管道使用的注意点

  • 使用之前需要在settings中开启
  • pipeline在setting中键表示位置(即pipeline在项目中的位置可以自定义),值表示距离引擎的远近,越近数据会越先经过:权重值小的优先执行
  • 有多个pipeline的时候,process_item的方法必须return item,否则后一个pipeline取到的数据为None值
  • pipeline中process_item的方法必须有,否则item没有办法接受和处理
  • process_item方法接受item和spider,其中spider表示当前传递item过来的spider
  • open_spider(spider) :能够在爬虫开启的时候执行一次
  • close_spider(spider):能够在爬虫关闭的时候执行一次
  • 上述俩个方法经常用于爬虫和数据库的交互,在爬虫开启的时候建立和数据库的连接,在爬虫关闭的时候断开和数据库的连接

3. crawlspider爬虫

作用:根据指定的 rule 规则,自动从响应中提取 url 地址,然后自动构造请求对象给引擎。

创建 crawlspider 爬虫

# scrapy genspider -t crawl 爬虫名称 允许抓取的域名范围
scrapy genspider -t crawl crawl_job 163.com

在这里插入图片描述

下篇

1. crawlspider爬虫[重点]

网易163 job示例

在这里插入图片描述

2. scrapy 中间件

scrapy 中间件分为:爬虫中间件和下载中间件,可以预处理请求对象和响应对象,主要使用下载中间件。

下载中间件中的方法

process_request(self, request, spider)

  • 当每个request通过下载中间件时,该方法被调用。
  • 返回None值:没有return也是返回None,该request对象传递给下载器,或通过引擎传递给其他权重低的下载中间件的process_request方法
  • 返回Response对象:不再请求,把response返回给引擎
  • 返回Request对象:把request对象通过引擎交给调度器,此时将不通过其他权重低的下载中间件的process_request方法

process_response(self, request, response, spider)

  • 当下载器完成http请求,传递响应给引擎的时候调用
  • 返回Resposne:通过引擎交给爬虫处理或交给权重更低的其他下载中间件的process_response方法
  • 返回Request对象:通过引擎交给调取器继续请求,此时将不通过其他权重低的下载中间件的process_request方法

在这里插入图片描述

3. 示例:随机设置请求头的User-Agent(重点)

在这里插入图片描述
在这里插入图片描述

4. 示例:设置请求使用代理 IP[重点]

在这里插入图片描述

5. 示例:腾讯招聘信息抓取[重点]

注意:腾讯招聘页面 html 源代码中没有职位的信息,职位的信息是通过其他请求获取然后填充到页面上的。

此处可以定义下载中间件,借助 selenium 访问 url,获取渲染之后的内容并返回响应对象。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不是方丈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值