爬虫——改变身份隐藏id,数据的储存和序列化、压缩

本文介绍了爬虫技术中如何更改请求头以模拟不同的用户代理,使用代理IP隐藏真实IP的方法,以及数据处理过程中的序列化、压缩和加密技术。同时,还探讨了如何利用MySQL进行数据的持久化存储。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

改变身份

在爬取很多网站的时候需要改变自己的身份,否则直接被截取无法爬取
因此我们需要在get的时候加入headers

herders

用的参数 user-agent
比如我们用百度爬虫的身份:

herders = {‘user-agent’: ‘Baiduspider’}

常见的User Agent
1.Android
Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19
Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
Mozilla/5.0 (Linux; U; Android 2.2; en-gb; GT-P1000 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
2.Firefox

Mozilla/5.0 (Windows NT 6.2; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0
Mozilla/5.0 (Android; Mobile; rv:14.0) Gecko/14.0 Firefox/14.0
3.Google Chrome

Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36
Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19
4.iOS

Mozilla/5.0 (iPad; CPU OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3
Mozilla/5.0 (iPod; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3A101a Safari/419.3

proxies

在国内有很多好人已经给你准备好许多ip了:
西刺代理——免费ip 就可以隐藏自己的ip了

proxies = {
‘http’: ‘118.187.58.34:53281’,
}
resp = requests.get(url, headers=herders, proxies=proxies)

在写爬虫之前我们需要了解数据的储存,例如cookie值
用户跟踪方式
1.cookie6
2.url——传入地址
3.hide——对用户提交表单中隐藏键
cookie与session关系已经为什么要用
cookie保存的事session的id 通过id才能拿到session的值

cookie的储存方式:
持久化(maxage设置时间)
基于浏览器窗口的(关了浏览器就没了)
因此需要对数据进行持久化

数据序列化和压缩

在储存数据的时候我们需要考虑数据的大小是否容易储存,因此可以对数据进行压缩

序列化:pickle 成字节模式
压缩:zlib
需要注意的是解压数据必须要先对其序列化
- pickle.dumps()将数据序列化
- zlib.compress()压缩数据
- zlib.decompress()解压缩
- pickle.loads()解序列化

数据的加密

需要用到单向哈西函数(哈西摘要)
不可逆
可以理解为将数据进行摘要话,只提取摘要的部分,因此不可逆转,如果需要匹配是否成功,就对进行输入的数据进行哈西处理,对两个数的哈西数是否相同即可

from hashlib import md5, sha1
都是进行哈西加密区别在于长度不同,md5是128bit,sha1是192bit
这里和解压是一样的都需要解析成直接才能对其进行加密

# 导入md5加密
hasher = md5()
# hasher = sha1()
# 传入参数(123)并且用utf-8解析成字节(必须是字节)并对(123)md5加密
hasher.update('123'.encode('utf-8'))
# 显示出结果
hasher.hexdigest()

因此在写入代码的时候想要把结果进行哈西处理和压缩的时候可以这样写

储存数据

将我们的数据进行持久化

mysql

写入原生的sql语句然后,execte就可以

拓展:executemany

一般的execte表示获取一个值然后储存进去,这样即好时又费力,因此我们可以先把要传入的数据写在一个元组里,最后对其保存
executemany可以传入多个元组,这样最后在提交到数据库的时候可以计提提交,节约时间

ll_list=[]
ll_list.append((headings[0], link))
cursor.executemany('insert into tb_result (rtitlr,rurl) values (%s, %s)',(ll_list))
coon.commit()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值