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 管理员  
 
 

