Requests网络爬虫简述

什么是网络爬虫

        网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟客户端发送网络请求,接收请求响应,是一种按照一定的规则,自动地抓取互联网信息的程序。
        只要是浏览器能做的事情,原则上,爬虫都能够做

爬虫的更多用途

  • 12306抢票软件
  • 网站上的投票
  • 短信轰炸

通用爬虫和聚焦爬虫工作流程在这里插入图片描述

分析网页上的数据存放在哪

  • 当前url地址对应的响应中
  • 其他url地址对应的响应中
    • 例如ajax请求
  • js生成的
    • 部分数据在url地址对应的响应中
    • 全部通过js生成

即爬虫爬取数据时,要以当前url地址对应的响应为准,因为ajax、jsDOM操作等因素的影响,当前url地址的elements的内容和url地址的响应可能不一致

使用IP代理

  1. 准备一批IP代理地址,组成IP池,随机选择一个IP来使用
  2. 如何随机使用代理IP,使用算法,让使用次数少的IP地址有更大的可能性被用到。思路为:记录使用次数,提取使用次数少的一定量IP代理,再对这一小部分IP代理进行随机提取
    1. {“ip”:ip,“times”:0}
    2. [{},{},{},{},{}…{}],将字典放入列表中再按使用次数进行排序
    3. 选取使用数量最少的N(N根据代理池的大小取值)个IP,从中随机选择一个
  3. 检查IP代理的可用性
    • 可以使用requests添加超时参数,判断IP代理的质量
    • 使用在线IP代理质量检测的网站

爬虫处理cookie和session

  • 带上cookie、session的好处
    • 能够请求到登录之后的页面
  • 带上cookie、session的缺点
    • 由于一套cookie和session往往跟一个用户对应,请求太快,请求次数太多,容易被服务器识别为爬虫
  • 如果不带上cookie、session请求太快,请求次数太多,也容易被服务器识别为爬虫;那么我们到底应不应该带上cookie、session?具体情况具体分析
    • 先使用不带cookie的版本,如果并没被服务器拉黑,也就意味着该网站服务器并未针对cookie设置反爬虫机制;这时候我们就不要使用携带cookie的版本了。即不需要cookie、session的时候尽量不使用cookie,不仅仅是因为反爬虫的缘故,使用cookie需要大量的账号获取cookie构建cookie池,会浪费大量的开发成本
    • 但是如果网站设置了用户权限,我们必须使用携带cookie、session的版本

http请求携带cookie属性

  • 跟IP池所用到的策略一致

使用requests提供的session类来发送post请求登录之后的网站的思路

  • 实例化session
  • 先使用session发生请求,登录到网站,把cookie保持在session中
  • 再使用session请求登录之后才能访问的网站,session能够自动的携带登录成功保存在其中的cookie,进行请求
    #不使用post请求,使用cookie获取登录后的页面
  • cookie过期时间很长的网站
  • 在cookie过期之前能够拿到所需的数据(比较麻烦,下次启动需要更新cookie)
  • 配合其他程序一同使用,其他程序负责获取cookie,当前程序负责获取数据
    #字典推导式,列表推导式
    cookie=’_zap=9e43678a-c3b1-4603-b051-3eb5a3fdc164; d_c0=“AFBvhzI5mA-PTgSPrhnBvo6BJgaiC0DnXFA=|1560693579”; tgw_l7_route=66cb16bc7f45da64562a077714739c11; _xsrf=pjA4CLL27yXESC5jZTHWjkveEzJ5B1E6; tst=r; q_c1=ff3073c8158f424f8313179c1cc74e69|1561194908000|1561194908000; capsion_ticket=“2|1:0|10:1561195716|14:capsion_ticket|44:ODg1NDAzMzUwODI3NDgyZTk5ZWMzZTkxMzE2YjMzYmQ=|e44fa8fd1a2b4eef17e369763b4d87e4c9665cf08b88823549c43ba8e3c90964”; z_c0=“2|1:0|10:1561195726|4:z_c0|92:Mi4xMjJTZ0NRQUFBQUFBVUctSE1qbVlEeVlBQUFCZ0FsVk56a0w3WFFDUTBfaHN1aVNCY3kxWktieTBDUkNzSWtMVEF3|97a4e872cd5a425d82a61d1ac5da3224d8f91c59d4555255a1ae867046e2b92d”’
    cookies={i.split("=")[0]:i.split("=")[1] for i in cookie.split(";")}

获取登陆后的页面的三种方式

  • 实例化seesion,使用session发送post请求,再使用他获取登陆后的页面
  • headers中添加cookie字段与值
  • 在请求方法中添加cookies参数,接受字典类型的cookie

response.text和response.content的区别(基于python3版本,不支持python2版本)

  • response.text

    • 类型:str
    • 解码类型: 根据HTTP 头部对响应的编码作出有根据的推测, 推测的文本编码
    • 如何修改编码方式:response.encoding=”gbk”
  • response.content

    • 类型:bytes
    • 解码类型: 没有指定
    • 如何修改编码方式:response.content.deocde(“utf8”)

#requests中解决编码问题的方法

  1. request.content.decode()使用utf-8编码格式可以解决绝大部分网站编码问题
  2. request.content.decode(‘gbk’)使用gbk编码格式可以解决一部分utf-8不能解决的网站编码问题
  3. request.text 虽然智能识别编码格式经常出错,但是总有正确的时候,前面两种不能解决时,不妨试试。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值