python百度跳转链接转化为绝对链接

编程知识 更新时间:2023-05-03 04:03:50

百度搜索出的结果中的网页链接是一个相对的跳转链接,而不是真实链接。


观察网址,可以发现链接的格式是由三个部分组成的,百度搜索链接的头+搜索结果的url加密部分+搜索者id的相关信息

以这一个网址来对三个部分进行说明

http://www.baidu/link?url=c44UXvDVd9NOUs8Y4rYIflC9L32dCWGWqG0F0Cv0-bS&wd=&eqid=e27b106a0000f1e8000000066321ab1a

百度搜索链接头:http://www.baidu/link

搜索结果加密部分:url=c44UXvDVd9NOUs8Y4rYIflC9L32dCWGWqG0F0Cv0-bS

搜索者id相关信息:wd=&eqid=e27b106a0000f1e8000000066321ab1a

最后,想要使用python将这个跳转链接转化为绝对链接,一定一定一定要把搜索者id相关信息去除(苦恼一整天的惨痛经历)

举例演示:

# 导入 requests 包
import requests

# 发送请求
response = requests.get('http://www.baidu/link?url=c44UXvDVd9NOUs8Y4rYIflC9L32dCWGWqG0F0Cv0-bS')
print(response.url)

抓取必应和百度搜索引擎中qq的子域名

# 本次实验内容主要为:收集baidu域名下的子域名,
# 收集方法为使用bing搜索引擎,采用爬手段,爬取搜索到的域名
# bing搜索引擎搜索子域名的语法为:domain:[域名]
from os import link
import requests                          #用于请求网页
from bs4 import BeautifulSoup            #用于处理获取的到的网页源码数据
from urllib.parse import urlparse        #用于处理url

#定义一个采用bing搜索的方法
def bing_search():
    Subdomain = []           #定义一个空列表用于存储收集到的子域名
    #定义请求头,绕过反爬机制
    hearders = {
        'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36 Edg/90.0.818.56',
        'accept':'*/*',
        'referer':'https://cn.bing/search?q=domain%3abaidu&qs=HS&pq=domain%3a&sc=10-7&cvid=B99CC286861647E79EF504A4D5B819F1&FORM=QBLH&sp=1',
        'cookie':'MUID=15F7A3347F9B66091BBBAC017EB56733'
    }
    #定义请求url
    url = "https://cn.bing/search?q=domain%3aqq&qs=n&sp=-1&pq=domain%3abaidu&sc=0-16&sk=&cvid=E6DAE965B2BD4FDC8DF857015E0499C1&first=9&FORM=PQRE1"
    resp = requests.get(url,headers=hearders)           #访问url,获取网页源码
    
    soup = BeautifulSoup(resp.content,'html.parser')    #创建一个BeautifulSoup对象,第一个参数是网页源码,第二个参数是Beautiful Soup 使用的 HTML 解析器,
    job_bt = soup.find_all('h2')                        #find_all()查找源码中所有<h2>标签的内容
    for i in job_bt:
        link = i.a.get('href')                          #循环获取‘href’的内容
        #urlparse是一个解析url的工具,scheme获取url的协议名,netloc获取url的网络位置
        domain = str(urlparse(link).scheme + "://" + urlparse(link).netloc)
        if domain in Subdomain:              #如果解析后的domain存在于Subdomain中则跳过,否则将domain存入子域名表中
            pass
        else:
            Subdomain.append(domain)
            print(domain)

#定义一个采用baidu搜索的方法
def baidu_search():
    Subdomain = []           #定义一个空列表用于存储收集到的子域名
    #定义请求头,绕过反爬机制
    hearders = {
        'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:104.0) Gecko/20100101 Firefox/104.0',
        'accept':'*/*',
        'referer':'https://www.baidu/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=domain%3Aqq&fenlei=256&rsv_pq=fcf1f0b200004214&rsv_t=65a8TR5Eh2big40H07J2K2gh8gYm7TiSE8I6eGLjjQXsP6EIExuQQj53xJJz&rqlang=en&rsv_dl=tb&rsv_enter=0&rsv_sug3=2&rsv_sug1=1&rsv_sug7=001&rsv_n=2&rsv_btype=i&inputT=2091&rsv_sug4=2482&rsv_sug=5',
        'cookie':'BAIDUID=0AC41D5532F617BBB7A5E2D832141489'
    }
    #定义请求url
    url = "https://www.baidu/s?ie=utf-8&f=8&rsv_bp=1&tn=monline_4_dg&wd=site%3Aqq&oq=domain%253Aqq&rsv_pq=e27b106a0000f1e8&rsv_t=002dqSQzAkaAteFLONBdRswl99SFLUcb2JchJwkts8ykvu%2FsHXIGfnuyxrEem5al6pWj&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_sug3=10&rsv_sug1=2&rsv_sug7=100&bs=domain%3Aqq"
    resp = requests.get(url,headers=hearders)           #访问url,获取网页源码
    
    soup = BeautifulSoup(resp.content,'html.parser')    #创建一个BeautifulSoup对象,第一个参数是网页源码,第二个参数是Beautiful Soup 使用的 HTML 解析器,
    job_bt = soup.find_all('h3')                        #find_all()查找源码中所有<h3>标签的内容
    for i in job_bt:
        link = i.a.get('href')                          #循环获取‘href’的内容 
        link = requests.get(link).url
        domain = str(urlparse(link).scheme + "://" + urlparse(link).netloc)
        if domain in Subdomain:              #如果解析后的domain存在于Subdomain中则跳过,否则将domain存入子域名表中
            pass
        else:
            Subdomain.append(domain)
            print(domain)


bing_search()
baidu_search()

更多推荐

python百度跳转链接转化为绝对链接

本文发布于:2023-04-30 12:31:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/b80b51a77bdc8020c6cd40082226e389.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:链接   跳转   转化为   python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 114492文章数
  • 28952阅读数
  • 0评论数