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

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

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

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

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

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

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

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

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

举例演示:

# 导入 requests 包
import requests

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

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

# 本次实验内容主要为:收集baidu.com域名下的子域名,
# 收集方法为使用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.com/search?q=domain%3abaidu.com&qs=HS&pq=domain%3a&sc=10-7&cvid=B99CC286861647E79EF504A4D5B819F1&FORM=QBLH&sp=1',
        'cookie':'MUID=15F7A3347F9B66091BBBAC017EB56733'
    }
    #定义请求url
    url = "https://cn.bing.com/search?q=domain%3aqq.com&qs=n&sp=-1&pq=domain%3abaidu.com&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.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=domain%3Aqq.com&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.com/s?ie=utf-8&f=8&rsv_bp=1&tn=monline_4_dg&wd=site%3Aqq.com&oq=domain%253Aqq.com&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.com"
    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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python是一种广泛应用于数据科学领域的高级编程语言,可以通过它轻松地爬取百度搜索真实链,并将结果保存为csv格式。 首先,需要安装requests、BeautifulSoup和csv等Python库。requests可以发送网络请求,BeautifulSoup可以解析HTML文件,而csv可以与CSV文件交互。 其次,需要编写代码来实现爬取百度搜索真实链的功能。首先,需要用requests库向百度搜索发送HTTP请求,并获取响应的HTML文件。然后,可以使用BeautifulSoup库解析HTML文件,筛选出所有搜索结果的标题和真实链,并将它们保存为列表。最后,可以使用csv库将列表写入CSV文件。 以下是一个简单的Python代码示例: ``` import requests from bs4 import BeautifulSoup import csv # 发送请求并获取HTML文件 url = 'https://www.baidu.com/s?wd=python' html = requests.get(url).text # 解析HTML文件,并筛选出所有搜索结果的标题和真实链 soup = BeautifulSoup(html, 'html.parser') results = [] for result in soup.select('#content_left .result'): title = result.select_one('.t').text href = result.select_one('.t a')['href'] results.append([title, href]) # 将结果保存为CSV文件 with open('baidu_python_search.csv', 'w', newline='', encoding='utf-8') as f: writer = csv.writer(f) writer.writerow(['标题', '链']) for result in results: writer.writerow(result) ``` 通过运行上述代码,可以爬取百度搜索中关于Python的所有搜索结果的标题和真实链,随后将其保存到名为baidu_python_search.csv的CSV文件中,从而完成任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值