当前位置: 首页 > article >正文

使用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))                     #查看列表长度 信息是否完全获取
# 警告:以下代码仅供学习和交流使用,严禁用于任何违法活动。  
# 本代码旨在帮助理解和学习编程概念,不得用于侵犯他人权益或违反法律法规的行为。 

http://www.kler.cn/a/324094.html

相关文章:

  • outline 分析
  • 【eNSP】企业网络架构实验——vlan间的路由通信(三)
  • 单片机智能家居火灾环境安全检测
  • 【Qt】报错error: undefined reference to `vtable for的最简单解决
  • 【Visual Studio】设置文件目录
  • nVisual自定义工单内容
  • 什么是聚类?
  • Docker数据卷有哪些常见的驱动类型?
  • K8S真正删除pod
  • SeeClick: Harnessing GUI Grounding for Advanced Visual GUI Agents论文学习
  • socket编程描述tcp的三次握手
  • Postman/Jmeter接口测试
  • MATLAB中的并行计算:提升性能的策略与实践
  • 有关若依菜单管理的改造
  • 动手学深度学习(李沐)PyTorch 第 4 章 多层感知机
  • golang Unicode api接口
  • 【C++】vector 常用成员函数的模拟实现
  • 使用Go语言的互斥锁(Mutex)解决并发问题
  • Goland的使用
  • 青动CRM-仓储云V1.1.2
  • 第十七节 鼠标的操作与相应
  • Three.js粒子系统与特效
  • 16年408-数据结构
  • C0003.用C++开发Qt界面,针对无边框界面,实现界面可任意拖动
  • 单片机配置IO口输出模式(IO口依然可以读取电平变化)
  • 函数内部的 arguments 变量特性,属性,如何将他转换为数组