学习爬虫的第46天,我知道了伪装的原因,向免费吃饭又进了一步

一般来说,获取数据使用 urllib库获取页面。

获取页面数据的几个知识点:

对每一个页面,调用 askURL函数获取页面内容;

定义一个获取页面的函数askURL,传入一个url函数,表示网址。

urllib.Request生成请求:rullib.urlopen发送请求获取响应,read获取页面内容。

在访问页面时经常会出现错误,为了程序正常运行,要加入异常获取try...excepy...语句

也就是说,想要快乐玩耍,必须要明白 urllib库 如何使用。


get请求

新建个 py 文件,敲几行代码了解下urllib库。

学习爬虫的第46天,我知道了伪装的原因,向免费吃饭又进了一步

这个的意思就是,通过 urlopen 方法打开相应网页,并把网页返回给定义变量。

读取结果就是网页的源代码。

这里切记要对获取的网页源码进行 utf-8 解析。

话说,感觉这个跟之前学到的 requests 的作用差不多啊。

这种获取网页的方式叫做获取 get 请求。

这个课程有个小缺点,就是因为是面向大学生的,所以之前他应该是有跟这帮孩子讲过网页的一些相关知识的,所以有时候涉及到网页的一些内容,他会直接拿来就用。

有时候会让我们这种小白一脸懵逼。

但是问题不大,毕竟作为大学老师,都知道大部分学生是啥水平,所以以前讲过的内容再用的时候,也不敢用的太多,浅尝辄止而已,最多就是用几个概念罢了。

对我们来说,偶尔碰到几个不懂或者没听过的词,也不怕。

毕竟,每个宅男碰到问题,都有一个最忠诚的女朋友帮我们解决问题--度娘。

学习爬虫的第46天,我知道了伪装的原因,向免费吃饭又进了一步

post请求

另一个获取网页的方式叫做 post 请求, post方式就是访问网址的时候可以给服务器发送一个表单,在里面把用户名、密码加密。

即模拟用户真实登录时使用。

这里为了方便,使用专门测试用的网址:httpbin.org

学习爬虫的第46天,我知道了伪装的原因,向免费吃饭又进了一步

这里需要使用 urllib 的 parse 方法,将下面的 bytes 中的键值对进行解析。

使用 bytes 将数据变为字节文件进行封装。

键值对中一般放入用户名、密码以及cookie信息。

学习爬虫的第46天,我知道了伪装的原因,向免费吃饭又进了一步

这里有意思的是图中的最后一行:"User-Agent": "Python-urllib/3.8"

也就是说,直接赤果果的告诉服务器:喂,老兄,哥是用Python访问的,不是用浏览器访问的,换句话说,我跟你一样,都不是个人!

所以以前总听人家说,爬虫必须要伪装巴拉巴拉什么的,我估计应该主要原因就是在这里。

你得让服务器从你的访问信息里面读出了,哦,这是通过浏览器访问的,也就是说,是个活生生的人,所以,让他进来吧。


超时处理

有时候网速可能不好,也有的时候对方发现我方是爬虫,不想让我方访问。

这两种情况都叫做超时。

网站或程序此时会卡死。

这里使用 timeout 可以进行设定时间。

更重要的是,使用 try...excepy...语句 进行异常监测。

学习爬虫的第46天,我知道了伪装的原因,向免费吃饭又进了一步

也就是说,对于超时,要有一个计划性的准备。

如果在一个指定的时间内(如3秒、5秒等),服务器还没有反应,那就应该进行结束这次循环,或者不要爬取这个网页的操作。


分享到:


相關文章: