scrapy框架拓展

1:crawlspider

  • 主要介绍crawlspider爬虫的一些拓展,可以用来自动换页
  • 有些场景使用crawlspider爬虫框架还是很方便的,前提是url的规则,使用正则表达式来方便

1.1:什么是crawlspider

  • crawlspider是另一种爬取数据的方式,从本质上来讲和scrapy是一种技术,只不过是当中添加了一些别的数据

1.2:学习目标

  • 通过这个知识点来了解crawlspider是如何使用的

1.3:特性

  • crawlspider爬虫框架继承于spider爬虫类,所以说spider爬虫可以完成的事情,crawlspider爬虫都可以完成

1.4:相比于普通的spider爬虫的优势

  • 可以自动根据一些规则来提取网页源码的链接发送给引擎,让引擎来调配

1.5:crawlspider的使用

1.5.1:如何创建crawlspider

  • 在原来创建spider爬虫时候,需要把创建爬虫的代码换为
    scrapy genspider -t crawl 爬虫文件的名字 爬虫爬取的范围地址
    • -t:以什么方式来创建爬虫框架
    • crawl:以crawl的方式来创建爬虫框架

1.6:crawlspider爬虫框架和crapy爬虫框架的区别

相同点:

  • 与别的scrapy爬虫框架的页面结构完全一样

不同点:

  • 1:多导入了几个包:

    • from scrapy.linkextractors import LinkExtractor

    • from scrapy.spiders import CrawlSpider, Rule

  • 2:多了个rules变量:这个变量存储的是一个元组,在这个元组中定义了一个链接提取的规则,可以定义多个rules变量,共有三个参数

    • 参数一:链接提取器,用来编写提取链接的规则的,多使用的是正则表达式,但是正则表达式一定要写正确,要不然返回的数据会出错;
    • 参数二:回调方法,虽然是一个str类型的数据,但是scrapy爬虫框架内部实现了函数的调用,在这里只是作为一个参数来调用;
    • 参数三:决定是否在提取的链接继续跟进,T为跟进,F为不跟进
  • 3:没有了pares方法:虽然没有了pares方法,但是scrap爬虫框架重写了pares方法,所以还是可以使用的

  • 4:多了个pares——item方法:

2:scrapy模拟登陆

2.1:怎么实现模拟登陆

  • 1:直接携带cookie登陆
  • 2:发送post请求,携带账号和密码登陆
  • 3:使用selenium模拟登陆

2.2:使用scrapy框架模拟登陆

  • 在使用scrapy框架模拟登陆的时候,只需要使用前两个方法就可以了,不使用第三个方法模拟登陆

2.3:直接携带cookie模拟登陆

  • 也就是在使用scrapy框架爬取数据的使用,在爬虫程序中直接携带cookie来模拟登陆

方法一

  • 在爬虫中间件文件中设置cookie,来实现模拟登陆
  • 注意:
    • Request()方法当中的所有参数,都可以作为请求对象request的属性
    • headers、cookies在爬虫中间件文件中,都是以字典的形式存储数据的
  • 代理IP的设置
    • 在爬虫中间件中添加一个request请求,使用meat属性
    • meat属性的作用:
      • 1:在不同方法间相互传递参数
      • 2:设置定义的ip,在下载中间件中写cookie文件
      • 代码

  • 注意:
  • 1:先在setting文件中把配置cookie的代码注释打开,原来是注释的情况(默认注释的情况是禁止的)
  • 2:打开,若改为False,找到的cookie是在setting文件中的headers中的cookie
  • 3:打开,若为True,找到的cookie是在下载中间件中的cookies

方法二

  • 在爬虫文件中,携带cookie发起请求
  • 步骤
    • 1:找爬虫文件中,重写start_request()方法,在这个时候携带cookie,就是在发起请求之前携带好的cookie
    • 2:使用cookie来加入request
      • 注意在这里携带的为cookies属性,而不是headers属性,在使用UA的时候使用的才是headers属性
    • 3:使用字典的形式存在呈现cookie,
      • 注意要使用字典的形式呈现cookie
    • 4:在scrapy中,cookie需要以字典的形式来呈现,headers和cookie都是需要使用字典的形式来呈现

2.4:使用post请求

方法一

  • 发送post请求来携带账号和密码
  • 在使用yield发送请求的时候可以携带账号和密码
    • 代码:
yield scrapy FromRequest(url, data, pages)
  • 步骤:
    • 1:先在网页源码中得到我们需要得到的数据
    • 2:发送请求,注意要把from_data中的数据拿过来
    • 3:携带数据发送请求,post请求,From_Request–>post请求、Request–>get请求
    • 另外:post请求的参数:1:url:主要的地址 、2:fromdata携带的数据(在网页源码中的包可以找到)、3:calldack:解析数据的反方法

方法二

  • from_request()、次要拓展,scrapy的一种内置的方法,可以只输入账号和密码,别的数据可以不用输入,也就是说更方便了
  • 获得响应的数据,请求数据
  • formdata={'login':'账号','password':'密码'},
    • login:账号
    • password:密码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值