爬虫学习笔记--scrapy二

全站数据爬取:
将网站中某板块下的全部页码所对应的信息爬取
Scrapy中
Yield scrapy.requests(url= ,callback=self.parse)
#手动请求发送:callback回调函数是专门用作于数据解析,,类比递归

在这里插入图片描述
-请求传参
-使用场景:如果爬取解析的数据不在同一张页面中(深度爬取)
–中间件:
—位置: 引擎和下载器之间
----作用 :批量拦截到整个工程中所有的请求和相应
----拦截请求:
----ua伪装
----代理ip
-----拦截相应:
—篡改响应数据,相应对象
Middlewares.py 是中间件的方法集

在这里插入图片描述
可以只保留这三个
Process_request用于拦截请求
#ua伪装
Request.headers[‘user-agent’] =’xxx’
#或者搜索ua池,让该池随机出一个赋值
_response 用于拦截回应
_excption 用于拦截异常
#代理 同样应用代理池
If request.url.split(“:’)[0]==’http’:
Request.meta[‘proxy’]=random.choice(self,list_name)
Else :
Pass
Return request #将修正后的请求对象重新发送请求
在这里插入图片描述
将setting中的打开

如果解析时遇到动态加载的页面要使用中间件处理
对 process_response 编写
#挑选出指定的响应对象进行篡改
#通过url指定request 通过request指定response
If request.url in spider.models_urls:
//针对定位到的这些进行篡改,实例化一个新的响应对象(符合需求:包含动态加载出的新闻数据),替代旧的相应对象 所以要导包

from scrapy.http import HtmlReponse
New_reponse=HtmlResponse(url,body,encoding,request)
return  new_reponse

else:
return reponse 

crawl spider:基于spider的一个子类
—全站数据爬取的方式
使用:
—创建一个工程
–cd xxx
—创建的爬虫文件(基于crawlspider):
—scrapy genspider -t crawl 爬虫文件名 www。Xxxx。Com

#链接提取器
    link=LinkExtractor(allow=r'Items/')

—链接提取器:
对链接进行提取,根据指定规则进行指定连接提取
Allow表示制定好的规则,等号后面表示正则表达式

Rules=()表示规则解析器 将连接提取器渠道的链接进行指定规则(callback)的解析操作

Follow=true时可以将链接提取器继续作用到 链接提取器提取到的连接 所对应的链接中

Xpath解析器中不能出现tbody标签,如果出现就使用//跳过

分布式爬虫:
—概念:我们需要搭建一个分布式的集群,让其对一组资源进行分布爬取
–作用:提升爬取数据的效率
–如何实现分布式?
–安装scrapy-redis 的组件
—原生的scrapy不可以实现分布式,必须要scrapy结合组件一起实现分布式爬虫,调度器不能共享,管道不能共享
—组件作用:
---- 给原生scrapy框架提供可被共享的管道和调度器

---实现流程:

—创建工程
—创建基于crwalspider的爬虫文件
–修改当前爬虫文件
–导包from scapy_redis.spiders import RedisCrwaSpider
– 将start_urls和allowed_domains进行注释
使用redis_key=”” 进行代替 可以被共享的调度器队列的名称
—将爬虫的父类改成RedisCrwaSpider
—修改settings文件
–指定可以使用的管道
–指定调度器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
增量式爬虫:
概念:
检测网站数据更新的情况,只会爬取网站最新更新出来的数据。
–分析:
–制定起始的url
–基于crwalspider获取其他页码链接
–基于rule将其他页码链接进行请求
–从每个页码对应的页面源码中解析出每一个电影详情页的url
–检测电影详情页的url之前有没有请求过
–将爬取过的电影详情页的url存储
–存储到redis的set数据结构
–对详情页的url发起请求,然后解析出电影名称和简介
–进行持久化存储

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值