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

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


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

运行结果:
image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,461评论 19 139
  • 2017.12.23 今日笔记: 1.地位变了,格局就变了 2.争吵的缘由:底层概念差异,主次不分,价值观不同,立...
    成长的温度阅读 2,187评论 0 2
  • 早晨的公司餐厅提供套餐一份,价格固定,但主食中的馒头、花卷、油饼任选其一,其他数量需按价格购买。套餐中的主食,...
    小城雨田阅读 1,371评论 0 1
  • 我喜欢的书的世界,尤其喜欢古诗词的世界。 外面的世界纷繁复杂,车跑得太快,信息来得太多,充斥耳目的都是劈天盖地的广...
    停云听风阅读 4,890评论 0 0
  • 众多时分,会感慨不可终日,可恍然之间,有能感受时光如梭,岁月似一条静悄悄的河流,44年的光阴说去就去了。蓦...
    来喜wzf阅读 4,722评论 1 23