Python百度检索获得真实的目的URL连接
百度搜索结果分析
百度搜索一个关键词,找到匹配项后,不操作,F12查看
元素代码如图:
此时URL为:http://www.baidu.com/link?url=_vGyw9wg5jFARtZX-0wLt_gqg69-tPorHO8QzNu241KeHIzBMiTKPXo0i75QkX1J
POSTMan请求这个地址,直接返回的是目标页
当我们在浏览器中 点击(左键或右键) 了这个连接后,发现这个连接会改变
POSTMAN请求结果如下:
前后区别是:
点击前:
HTTP
协议- 只有一个URL参数
- 请求连接直接会返回目标页面内容
点击后:
HTTPS
协议- 多了
wd
参数 - 多了
eqid
参数 - 请求连接会先跳转中间页,然后再通过js代码跳转到目标页
虽然不知道什么用,在次记录一下
但是知道了这个规则,百度连接转换真实URL的时候,思路经更加清晰了
只获取URL参数,
Python 全选
# coding=utf-8
import requests
import re
# 百度检索中,百度URL转换成真实的目标URL
# URL转换
def convertURL(url):
host = re.search(r"^[^?]+", url).group(0)
url = re.search(r"url=[^&]+", url).group(0)
return host + '?' + url
# 获得百度的目标URL
def getURL(baiduURL):
_url = convertURL(baiduURL)
header = requests.head(_url).headers
local_url = header.get('location')
if local_url is None:
# print('没有找到local_url')
return None
# print('获得URL:', local_url)
return local_url
url = 'http://www.baidu.com/link?url=vd-upvwgZW2OzLuCXRBsZFqxyKTAaDJW2TCCIwO108WMGe0PDD7FniRRLohwpsDL'
local_url = getURL(url)
print('URL:', url)
print('获得目标URL:', local_url)
url = 'https://www.baidu.com/link?url=sBq7Udr5bxCz-NbelLqCCvEDQngM7uMp7JIgg36DUpK&wd=&eqid=b30019460008ea95000000066163e29d'
# 测试
local_url = getURL(url)
print('URL:', url)
print('获得目标URL:', local_url)
# 输出
# URL: http://www.baidu.com/link?url=vd-upvwgZW2OzLuCXRBsZFqxyKTAaDJW2TCCIwO108WMGe0PDD7FniRRLohwpsDL
# 获得目标URL: http://www.vtradex.com/pro_oms.html
# URL: https://www.baidu.com/link?url=sBq7Udr5bxCz-NbelLqCCvEDQngM7uMp7JIgg36DUpK&wd=&eqid=b30019460008ea95000000066163e29d
# 获得目标URL: http://datatook.com/
版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
post 管理员