爬虫的伪装,数据乱码的解决

235 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第24天,点击查看活动详情

引言

今天给大家带来第二篇爬虫的文章,主要给大家从爬虫的伪装,数据乱码和视频的爬取三个方面来学习python爬虫

爬虫的伪装

这里分别从###

浏览器伪装

访问地址伪装

3.ip地址伪装

4.控制访问速率

5.伪装用户cookie

6.被拒绝连接的处理

六个方面来讲解爬虫的伪装

浏览器伪装

默认的爬虫是形如Python-urllib/2.1的形式的,很多网站可能会在校验上发现我们,然后拒绝我们的请求。

所以我们可以通过浏览器的伪装来替换默认的

我们这里在浏览器中打开开发者工具,找到User-Agent这一栏

将其全部复制下来,然后我们初始化一个字典的对象,然后封装我们的User-Agent,完成伪装

(PS:我们python字典中存储的是键值对,直接将User-Agent那一栏粘贴进去,会报错,因为这是我们未定义的对象,但是其实只是字符串,所以我们要用引号分别囊括两部分,即:键和值。)

接下来我们在请求函数中使用这个字典

result = requests.get(url=url,hearders=headers).text

完成第一部分的伪装

访问地址伪装

访问地址指的是headers头部中的reffer信息,我们可以加入“reffer”信息伪装访问地址,将其封装到字典里并使用,完成封装

3.ip地址伪装

反爬虫检测到某个IP的访问次数很多,或者是访问的频率很快,就会封禁这个IP。当我们被封了之后,可以使用代理IP来解决。

4.控制访问速率

这里我们可以控制访问速率,正常人类访问一个网站一般速度上不会太奇怪,所以我们使用爬虫请求的时候,可以控制访问速率,通过延时,来避免被发现

5.伪装用户cookie

很多需要登录的网站,在登陆后会获得一个cookie,所以对于没有cookie的请求服务器往往会拒绝过滤掉我们的请求

6.被拒绝连接的处理

有的服务器会以诡异的请求去拒绝我们的请求,或者是通过一些奇怪的降低用户体验的机制来防止我们爬取他的信息,常见于一些小网站

我们可以通过递归调用自身,检测到异常就递归,反之继续请求其他的信息

数据乱码

有时候我们爬取到的信息可能会出现中文乱码

怎么理解中文乱码?

相当于一个说日语的人说了一句:“八嘎呀陆”,而接收者采用了中文来理解,就是一段不知道什么意思的“乱码”。

针对这个问题,在语言上我们可以采用录制原始音频(不管怎么解读,原始的音频,波动都是一样的)再通过日语来解读

程序也是同理

我们接收到requests的请求后,不直接获取text,而是获取二进制数据,然后再以某一编码去解读。

example:

import requests

url = "https://baike.baidu.com/item/%E7%9C%BC%E9%95%9C%E7%8E%8B%E8%9B%87/538562"

result = requests.get(url=url).text

print(result)

结果:

image.png

乱码的

解决版本:

import requests

url = "https://baike.baidu.com/item/%E7%9C%BC%E9%95%9C%E7%8E%8B%E8%9B%87/538562"

result = requests.get(url=url).content

real = result.decode("UTF-8")

print(real)

image.png

结果如上,我们就完成了乱码问题的解决