千家信息网

怎么用Python实现爬取百度热搜信息

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,小编给大家分享一下怎么用Python实现爬取百度热搜信息,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!前言何为爬虫,其实就是利用计算机模拟人对网页的操作例如 模拟人类浏览购物网站使用
千家信息网最后更新 2026年11月03日怎么用Python实现爬取百度热搜信息

小编给大家分享一下怎么用Python实现爬取百度热搜信息,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

前言

何为爬虫,其实就是利用计算机模拟人对网页的操作

例如 模拟人类浏览购物网站

使用爬虫前一定要看目标网站可刑不可刑 :-)

可以在目标网站添加/robots.txt 查看网页具体信息

例如对天猫 可输入 https://brita.tmall.com/robots.txt 进行查看

User-agent 代表发送请求的对象

星号*代表任何搜索引擎

Disallow 代表不允许访问的部分

/代表从根目录开始

Allow代表允许访问的部分

在本例中 我爬取的百度热搜前30的新闻(本人原本打算爬取英雄联盟主页 数据中心 大乱斗胜率前五十的英雄信息 奈何不会实现延时爬取网页的操作 无奈只能爬百度热搜) 并且其大致信息放到Excel表格以及Flask网页中实现数据可视化 感兴趣的同学也可以对其它内容进行爬取

由于本人水平有限 本文章中的爬虫都是比较基础的东西

库函数准备

Python库的安装方法:

打开cmd命令提示符输入pip install XXX(这个是你要装的库名称)

关于这些库的具体使用 可以接下来看我的操作

只需要简单掌握几个常用的函数即可

bs4

即BeautifulSoup

用来解析HTML网页,提取指定数据的。

其中详细的用法待会看我的演示。

re

正则表达式 用来匹配字符串中响应的字串。

关于正则表达式 可以去看菜鸟教程 里边讲的很详细

urllib

是一个Python自带的HTTP请求库,可以操作一系列URL。

xlwt/xlrt

用于写入(write) / 读取(read),Excel表中的数据。

flask

这个库是用来只做一个简单的Web框架即网站,用于数据的可视化。

其实本人对于数据可视化的掌握也很浅薄,只是简单的将数据导入Web网页中。

jinja2

这个库的作用是为了实现在HTML网页中的字符中插入自变量的功能。

后端:name="HQ"前端:

{{name}}长得真帅!

显示:HQ长得真帅!

markupsafe

与Jinja共用 在渲染页面时用于避免不可信的输入,防止注入攻击(虽然没人会攻击你....)

数据爬取

数据爬取 和 数据可视化 两个py文件是分开的

数据爬取需要导入re bs4 urllib xlwt 四个库文件

网页爬取

使用一下的方法调用函数可以使函数调用关系更加清晰

if __name__=="__main__":  #当程序执行时 调用一下函数    main()
def askurl(url):    head={        "User-Agent":'''Mozilla/5.0 (Windows NT 10.0; Win64; x64)         AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Edg/97.0.1072.55'''    }    #用户代理 告诉服务器我只是一个普普通通的浏览器    requset=urllib.request.Request(url)    #发送请求    response=urllib.request.urlopen(requset)    #响应的为一个request对象     #通过read()转化为 bytes类型字符串    #再通过decode()转化为 str类型的字符串     #接受响应    html=response.read().decode('utf-8')        将抓取到的网页存入文档中 方便观察    path=r"C:\Users\XXX\Desktop\Python\text.txt"       #这里在字符串前加入r 防止字符串中的\发生转义     f=open(r"path",'w',encoding='utf-8')    f.write(html)    f.close()    #这样在txt文件中就可以查看网页的源码     return html

headers的值可以在网页中按F12

然后点击网络变化 对于任意一个请求标头 下拉到最下方即为 user-agent 代理信息

值得注意的是 请求中如果不设置headers 则服务器会返回一个418的状态码

代表服务器识别出来你是一个爬虫 并且表示:" I'm a teapot "

表明服务器拒绝冲煮咖啡,因为它永远是一个茶壶(这是一个梗)

数据解析

将抓取的txt文件后缀改为html后打开即为一个本地的网页

如果在vscode中因为行过长而产生报错 可以参考以下博客

打开后的网页如图所示

使用这个功能查看需要爬取信息的位置

在本项目中 我们抓取目标信息的标题 内容 热度 以及链接

我们可以发现 我们需要的信息全部在class为以下类型的表中

于是我们用Beautifulsoup对网页进行解析

def getData(html):    datalist=[]    soup=BeautifulSoup(html,"html.parser")   #定义一个解析对象        #soup.find_all(a,b) 其中a为标签的类型 class_ 对div的class进行匹配     #返回的是所有class为category-wrap_iQLoo horizontal_1eKyQ的列表        for item in soup.find_all('div',class_="category-wrap_iQLoo horizontal_1eKyQ"):        item=str(item)        #将列表中每一个子标签转换为字符串用于re匹配

接下来对每一个item进行re匹配

首先使用re.compile()创建匹配规则 然后用findall进行匹配

匹配规则的创建方式为在HTML文件中查看目标信息前后的特殊字符

而(.*?)即为要匹配的字符串 其中*后加?代表非贪婪匹配

例如

标题前后信息即为ellipsis">和

其它同理

#匹配规则#链接findlink=re.compile(r' href="(.*?)" rel="external nofollow"  target="_blank') #标题findtitle=re.compile(r'ellipsis"> (.*?) 
')

而内容部分 我在后续运行的时候发现报错 原因是

部分内容前缀为'ellipsis_DupbZ"> 部分内容前缀为small_Uvkd3">

因此我编写了两种匹配方式

具体代码如下

def getData(html):    datalist=[]    soup=BeautifulSoup(html,"html.parser")   #定义一个解析对象        #soup.find_all(a,b) 其中a为标签的类型 class_ 对div的class进行匹配     #返回的是所有class为category-wrap_iQLoo horizontal_1eKyQ的列表        for item in soup.find_all('div',class_="category-wrap_iQLoo horizontal_1eKyQ"):        item=str(item)        #将列表中每一个子标签转换为字符串用于re匹配        data=[]        #标题        title=re.findall(findtitle,item)[0]        #简介        #判断是否对第一种匹配 如果不是的话返回为空列表 此时应采用第二种匹配         if (len(re.findall(findcontent1,item))!=0):            content=re.findall(findcontent1,item)[0]        else:            content=re.findall(findcontent2,item)[0]        #热度        number=re.findall(findnumber,item)[0]        #链接        link=re.findall(findlink,item)[0]         #将数据存入数组        data.append(title)        data.append(number)        data.append(content)        data.append(link)        datalist.append(data)            print(datalist)    return datalist

数据保存

def Savedata(datalist):    #存入数据的目标路径    path=r'C:\Users\XXX\Desktop\Python\爬虫\data.xls'    workbook=xlwt.Workbook(encoding='utf-8')    #创建工作表对象    worksheet=workbook.add_sheet('sheet1')    #创建表单     col=("标题","热度","内容","链接")    #定义表含有的属性     for i in range(4):        worksheet.write(0,i,col[i])    #write(i,j,value) 向 表单的 [i][j] 位置写入value    for i in range(30):        for j in range(4):            worksheet.write(i+1,j,datalist[i][j])     #将excel表保存    workbook.save(path)

看完了这篇文章,相信你对"怎么用Python实现爬取百度热搜信息"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

数据 网页 信息 字符 字符串 代表 内容 函数 对象 标题 爬虫 目标 类型 部分 文件 服务器 标签 网站 链接 可视化 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 重生之互联网科技帝国 互联网科技公司华为 中国 科技 互联网 贷财互联网科技 苏州互联网科技贷款公司 科技与互联网的利与弊 须眉科技是互联网公司吗 互联网经济与金融科技 互联网科技公司实习生 互联网科技人工智能实验室 洛阳共同富裕互联网科技有限公司 威龙国际互联网科技公司 中和天地互联网科技有限公司 伊宁互联网科技做什么的 美国互联网科技实力 雨阳互联网卡科技有限公司 萌小萌互联网科技河南有限公司 互联网科技手机排行榜 云南互联网科技学费 互联网科技和医药行业 互联网和科技创新 科技信息互联网 联恩商钥互联网科技有限公司 开启互联网科技时代小说 崇明区互联网教育科技售后服务 小米互联网科技园入驻 互联网科技包装股份有限公司上市 保山互联网科技靠谱吗 互联网科技品牌 东风日产互联网科技公司叫什么
0