【python爬虫专项(3)】网络资源获取工具requests库介绍(try-except错误异常处理)

1、requests介绍

1.1 什么是requests?

用于访问网页(url)的工具包

1.2 如何安装?

首先检查自己有没有requests:pip show
在这里插入图片描述

如果没有,直接安装:pip install requests,

        如果安装存在问题,可以使用镜像进行安装,pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple

1.3 如何导入requests:

在编写代码的窗口顶部输入:import requests

2. 发送url请求

以豆瓣读书网为例:https://book.douban.com/tag/%E7%BB%8F%E5%85%B8

2.1 直接访问

在这里插入图片描述

2.2 响应信息解读

2.2.1 状态码

在这里插入图片描述
豆瓣现在需要浏览器请求(响应头)头还可以进行访问,否则就是会请求失败
在这里插入图片描述

2.2.2 响应头

这个是系统生成的请求头,并不是一种浏览器访问情况下的请求头,因此是无效了(会被屏蔽掉)
在这里插入图片描述
如果要获得浏览器的请求头,可以打开浏览器,在目标页面打开检查选项,选择network后刷新页面,这时候network左下方的Name栏会出现一些页面,选择其中的一个,把界面往下拉最后面就是了,如下
在这里插入图片描述 加入浏览器请求头后,输出的结果如下(状态码为200,代码可以正常请求网页信息了)
在这里插入图片描述

2.2.3 网页编码

注意:如果网页出现乱码,一般是编码出现问题
在这里插入图片描述
如何查看真实编码?
在这里插入图片描述
一劳永逸解决编码问题,也就是编码格式等于现在网页的编码格式,如下面的最后一行代码所示
在这里插入图片描述

2.2.4 源代码内容

在这里插入图片描述

3. 如何设置登录信息 → cookie

3.1 首先登陆网页

cookie,有时也用其复数形式 cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。有些网站如果没有cookie是不允许进行数据的爬取的,要想获得cookies,第一步就是要进行登录,

如果没有账户的话,可以在欲爬取的网站上注册一个即可,登录完毕后,进行下一步

3.2 查找【Requests Headers】

cookie信息的查找和之前的headers的查找是一致的,这里就不再进行叙述了,直接把流程贴出来:鼠标右键 → 检查 → 找到【Network】→【刷新 】 → 选择【Doc】 → 选择【Headers】 → 找到【Requests Headers】,如下
在这里插入图片描述

3.3 构建一个函数,将cookies信息变成一个字典

之前是直接将请求头放在字典里,接下来就是将cookies里面的内容也设置成为字典,这里就不方便手动操作了,示例就是上面的cookies,代码如下

cookies = 'll="108296"; bid=b9z-Z1JF8wQ; _vwo_uuid_v2=DDF408830197B90007427EFEAB67DF985|b500ed9e7e3b5f6efec01c709b7000c3; douban-fav-remind=1; __yadk_uid=2D7qqvQghjfgVOD0jdPUlybUNa2MBZbz; gr_user_id=5943e535-83de-4105-b840-65b7a0cc92e1; dbcl2="150296873:VHh1cXhumGU"; push_noty_num=0; push_doumail_num=0; __utmv=30149280.15029; __gads=ID=dcc053bfe97d2b3c:T=1579101910:S=ALNI_Ma5JEn6w7PLu-iTttZOFRZbG4sHCw; ct=y; Hm_lvt_cfafef0aa0076ffb1a7838fd772f844d=1579102240; __utmz=81379588.1579138975.5.5.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; __utmz=30149280.1579162528.9.8.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; ck=csBn; _pk_ref.100001.3ac3=%5B%22%22%2C%22%22%2C1580991742%2C%22https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DNq2xYeTOYsYNs1a4LeFRmxqwD_0zDOBN253fDrX-5wRdwrQqUpYGFSmifESD4TLN%26wd%3D%26eqid%3De7868ab7001090b7000000035e1fbf95%22%5D; _pk_id.100001.3ac3=6ec264aefc5132a2.1571800818.8.1580991742.1580979329.; _pk_ses.100001.3ac3=*; __utma=30149280.195590675.1570957615.1580979329.1580991743.12; __utmc=30149280; __utmt_douban=1; __utmb=30149280.1.10.1580991743; __utma=81379588.834351582.1571800818.1580979329.1580991743.8; __utmc=81379588; __utmt=1; __utmb=81379588.1.10.1580991743; ap_v=0,6.0'
cookies_lst = cookies.split("; ")
dic_cookies = {}
for i in cookies_lst:
	dic_cookies[i.split("=")[0]] = i.split("=")[1]

print(dic_cookies)

输出的cookies字典如下
在这里插入图片描述

3.4 将headers和cookies写入到requests.get()里

接上面的代码,然后在requests.get()里面添加相应的信息

res = requests.get(url, headers = headers_dic, cookies = cookies_dic)

3.5 一些注意点

一般情况,一个机构/平台的网页,用一个headers登录信息足够

对于复杂的网页,【分页网页】使用一个headers信息,【数据信息网页】使用一个headers信息

        ● headers_dic里面是允许存放多个键值对,也就是多个浏览器的请求头的

4. 错误与异常解决

4.1 什么时候会出现错误异常?

连不上服务器

远程的服务不存在

BeautifulSoup解析网页标签时,由于数据源问题,无法准确识别

4.2 处理方法

try…except…语句

目的是什么?

         报错情况下,爬虫继续进行

示例

        ● 有5个网址需要访问,其中第三和四个由于网址错误,不进行报错处理,在第3个网页访问时报错,导致程序无法进行下去,爬虫中断
在这里插入图片描述
通过try…except…实现,即使存在部分网址错误,也不影响爬虫的继续,代码如下
在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lys_828

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

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

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

打赏作者

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

抵扣说明:

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

余额充值