python如何获取百度搜索中的真实url

在爬取百度搜索中的链接时,我们发现获取的链接都是经过百度加密过的,比如这样:


python如何获取百度搜索中的真实url_第1张图片
image.png

可以看到,获取的网址是这样的:

 https://www.baidu.com/link?url=eMmgypP19LcmUtjiK4xRzPv0rl5y-BauEr3Nwxi5dzudQFmccUTLsYhbH5IPJiu5&wd=&eqid=ebae21c60001c462000000055c0a021f

观察上面的网址,发现结构可以分为3部分:

https://www.baidu.com/link? + url=***** + &wd=&eqid=ebae21c60001c462000000055c0a021f

第1部分是所有的百度搜索链接的头,第2部分是搜索结果的url加密部分,第3部分是搜索者id相关的数据,可以删除。删除第3部分后得到网址:

https://www.baidu.com/link?url=eMmgypP19LcmUtjiK4xRzPv0rl5y-BauEr3Nwxi5dzudQFmccUTLsYhbH5IPJiu5

上面这步很重要,如果带着第3部分去请求的话是得不到真实地址的

将得到的网址复制到浏览器地址栏,发现可以正常打开,下面就可以获取搜索结果的真实url了。

要获取真实网址其实很简单,只需要用到requests库,爬取一次该网址,然后通过返回的Response对象的url属性就可以获得真实的url了

import requests
url = 'https://www.baidu.com/link?url=eMmgypP19LcmUtjiK4xRzPv0rl5y-BauEr3Nwxi5dzudQFmccUTLsYhbH5IPJiu5'
r = requests.get(url)
print(r.url)  #真实url

运行结果:
python如何获取百度搜索中的真实url_第2张图片
image.png

你可能感兴趣的:(python如何获取百度搜索中的真实url)