使用python获取百度一下,热搜TOP数据详情
一、查找对应链接
# 警告:以下代码仅供学习和交流使用,严禁用于任何违法活动。
# 本代码旨在帮助理解和学习编程概念,不得用于侵犯他人权益或违反法律法规的行为。
1、打开百度页面 百度一下,你就知道
2、点击F12 或 右键鼠标选择下方的检查 进入 调试模式
3、选择Network 选项,点击显示全部信息 all 完成第二步后,点击左上角的刷新或快捷键 Ctrl+R 进行刷新,就会出现第三个点的信息
我们可以看到显示的信息,正是我们所需要的,证明这就是我们需要的目标链接
4、点回 Headers 看一下资源链接和请求方式,方便后续操作
可以看到,请求链接为:百度一下,你就知道 请求方式为:GET 请求状态码为 200表示成功
回到我们的IDE编辑器中,开始动手敲代码
二、编辑代码
1、导入第三方库 requests 这是一个用于请求网页链接获取对应信息的第三方库,导入前需要在终端中进行安装
pip install requests
2、向对应链接发送请求,并查看状态码,若是200 表示请求成功
这时的内容还是比较混乱的,我们需要对信息做一步清洗,提取所需要的一部分内容
3、目标url
url = "https://www.baidu.com/"
4、构造请求头,为防止服务器识别到异常请求而不返回数据,我们需要模拟浏览器发送请求
#构建请求头 模拟浏览器发送请求 否者会被检测到 返回信息就为空
headers = {
"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36"
}
5、使用正则表达式,提取热搜的内容部分 正则表达式返回的数据类型为列表
#清洗源码 提取关键信息
re_title = re.findall('"card_title": "(.*?)"',response) #获取热搜标题
re_linkurl = re.findall('"linkurl": "(.*?)"',response) #热搜对应链接
re_index = re.findall('"index": "(.*?)"',response) #热搜排名
6、打印后,发现百度热搜的链接做了百分比加密,无法直接使用,需要进一步解密
from urllib.parse import unquote_plus #导入解码库 默认链接采用了百分比编码,无法直接使用,需要进行解码
# 包含URL编码的字符串
encoded_url_list = re_linkurl
list_url = [] #创建一个列表用户存放解码后的链接
for i in encoded_url_list: #遍历url列表
decoded_url = unquote_plus(i) # 使用unquote_plus函数解码URL
print(decoded_url) # 打印解码后的URL
list_url.append(decoded_url) #将解码后的链接放入列表中
print(len(list_url)) #查看列表长度 信息是否完全获取
三、完整代码
'''
# 警告:以下代码仅供学习和交流使用,严禁用于任何违法活动。
# 本代码旨在帮助理解和学习编程概念,不得用于侵犯他人权益或违反法律法规的行为。
'''
import requests #导入第三方请求库
import re
#目标url
url = "https://www.baidu.com/"
#构建请求头 模拟浏览器发送请求 否者会被检测到 返回信息就为空
headers = {
"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36"
}
#发送请求 获取网页源码
response = requests.get(url,headers=headers).text
#清洗源码 提取关键信息
re_title = re.findall('"card_title": "(.*?)"',response) #获取热搜标题
re_linkurl = re.findall('"linkurl": "(.*?)"',response) #热搜对应链接
re_index = re.findall('"index": "(.*?)"',response) #热搜排名
print(re_index,re_title,re_linkurl)
from urllib.parse import unquote_plus #导入解码库 默认链接采用了百分比编码,无法直接使用,需要进行解码
# 包含URL编码的字符串
encoded_url_list = re_linkurl
list_url = [] #创建一个列表用户存放解码后的链接
for i in encoded_url_list: #遍历url列表
print(i)
# 使用unquote_plus函数解码URL
decoded_url = unquote_plus(i)
# 打印解码后的URL
print(decoded_url)
list_url.append(decoded_url) #将解码后的链接放入列表中
print(len(list_url)) #查看列表长度 信息是否完全获取
# 警告:以下代码仅供学习和交流使用,严禁用于任何违法活动。
# 本代码旨在帮助理解和学习编程概念,不得用于侵犯他人权益或违反法律法规的行为。