我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

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

前言

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

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

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

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

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

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

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"前端:<p>{{name}}长得真帅!</p>显示: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 代理信息

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

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

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

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

数据解析

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

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

 打开后的网页如图所示

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

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

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

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

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

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

 于是我们用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文件中查看目标信息前后的特殊字符

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

例如

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

标题前后信息即为ellipsis"></div> <div cla 

其它同理

#匹配规则#链接findlink=re.compile(r' href="(.*?)" rel="external nofollow"  target="_blank') #标题findtitle=re.compile(r'ellipsis"> (.*?) </div> <div cla') #内容findcontent1=re.compile(r'ellipsis_DupbZ"> (.*?) <a class=')findcontent2=re.compile(r'small_Uvkd3"> (.*?) <a class=')#热度findnumber=re.compile(r'ex_1Bl1a"> (.*?) </div>')

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

部分内容前缀为'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实现爬取百度热搜信息”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网行业资讯频道,感谢各位的阅读!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

小编给大家分享一下怎么用Python实现爬取百度热搜信息,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!前言何为爬虫,其实就是利用计算机模拟人对网页的操作例如 模拟人类浏览购物网站使用爬虫前一定要看目标网站可刑不可刑 :-)
2023-06-26

Python爬虫怎么实现热门电影信息采集

这篇文章主要介绍“Python爬虫怎么实现热门电影信息采集”,在日常操作中,相信很多人在Python爬虫怎么实现热门电影信息采集问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python爬虫怎么实现热门电影信
2023-06-21

怎么用python爬取douban信息

本篇内容介绍了“怎么用python爬取douban信息”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先导入库定义保存地址函数解析网址打印爬
2023-06-02

使用python怎么爬取微博的热搜数据

使用python怎么爬取微博的热搜数据?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。主要用到requests和bf4两个库将获得的信息保存在d://hotsea
2023-06-06

使用Python怎么爬取微博热搜关键词

今天就跟大家聊聊有关使用Python怎么爬取微博热搜关键词,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和
2023-06-14

Python+Selenium怎么实现短视频热点爬取

本篇内容介绍了“Python+Selenium怎么实现短视频热点爬取”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!涉及知识点1.seleni
2023-06-30

Python怎么实现爬取腾讯招聘网岗位信息

本篇内容主要讲解“Python怎么实现爬取腾讯招聘网岗位信息”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python怎么实现爬取腾讯招聘网岗位信息”吧!介绍开发环境Windows 10pyth
2023-06-22

Python基于Selenium怎么实现动态网页信息的爬取

这篇文章主要介绍“Python基于Selenium怎么实现动态网页信息的爬取”,在日常操作中,相信很多人在Python基于Selenium怎么实现动态网页信息的爬取问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答
2023-06-22

怎么用Python爬取2022春节档电影信息

这篇文章将为大家详细讲解有关怎么用Python爬取2022春节档电影信息,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。实验环境Python 3.x (面向对象的高级语言)Resquest 2.14.2 (
2023-06-29

怎么在python中实现被动信息搜集

这篇文章将为大家详细讲解有关怎么在python中实现被动信息搜集,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研
2023-06-14

Python怎么用正则表达式实现爬取古诗文网站信息

本篇内容介绍了“Python怎么用正则表达式实现爬取古诗文网站信息”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!分析古诗文网站下图1展示了古
2023-06-25

使用Python怎么爬取淘宝的商品信息

这期内容当中小编将会给大家带来有关使用Python怎么爬取淘宝的商品信息,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python有哪些常用库python常用的库:1.requesuts;2.scrapy
2023-06-14

怎么利用Python网络爬虫来提取信息

怎么利用Python网络爬虫来提取信息,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。下面小编就为大家带来一篇Python网络爬虫与信息提取(实例讲解)。小编觉得挺不错的,现在就
2023-06-02

Python中怎么利用网络爬虫获取招聘信息

Python中怎么利用网络爬虫获取招聘信息,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、定义一个class类继承object,定义init方法继承self,
2023-06-16

Python调用百度api怎么实现语音识别

Python调用百度api怎么实现语音识别,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。最近在学习python,做一些python练习题github上几年前的练习题有一题是这样
2023-06-21

如何使用Python通过获取剪切板数据实现百度划词搜索功能

小编给大家分享一下如何使用Python通过获取剪切板数据实现百度划词搜索功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、实现划词功能说是划词翻译,实际上我们
2023-06-15

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录