iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >用Python实现爬取百度热搜信息
  • 632
分享到

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

2024-04-02 19:04:59 632人浏览 独家记忆

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"
前端:
<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 代理信息

值得注意的是  请求中如果不设置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"></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实现爬取百度热搜信息的文章就介绍到这了,更多相关Python爬取百度热搜内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 用Python实现爬取百度热搜信息

本文链接: https://www.lsjlt.com/news/162357.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • 用Python实现爬取百度热搜信息
    目录前言库函数准备数据爬取网页爬取数据解析数据保存总结前言 何为爬虫,其实就是利用计算机模拟人对网页的操作 例如 模拟人类浏览购物网站 使用爬虫前一定要看目标网站可刑不可刑 :-) ...
    99+
    2022-11-12
  • 怎么用Python实现爬取百度热搜信息
    小编给大家分享一下怎么用Python实现爬取百度热搜信息,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!前言何为爬虫,其实就是利用计算机模拟人对网页的操作例如 模拟人类浏览购物网站使用爬虫前一定要看目标网站可刑不可刑 :-)...
    99+
    2023-06-26
  • Python项目实战:百度百科关键字搜索信息
    前言今天为大家利用Python的format转发关键字来获取百度百科搜索信息,比如说你不懂一个名词,动词是什么意思,你可上百度百科上面自行搜索,今天用Python模拟百度百科搜索信息功能导入第三方库...
    99+
    2023-06-02
  • Python实现抖音热搜定时爬取功能
    目录抖音热搜榜requests爬取selenium爬取数据解析设置定时运行大家好,我是丁小杰。 上次和大家分享了Python定时爬取微博热搜示例介绍,堪称摸鱼神器,一个热榜不够看?今...
    99+
    2022-11-13
  • 如何用Python爬取百度搜索结果并保存
    这篇文章主要讲解了“如何用Python爬取百度搜索结果并保存”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用Python爬取百度搜索结果并保存”吧! 一、前言众所周知,百度上直...
    99+
    2023-06-15
  • python实现百度文库自动化爬取
    目录项目介绍已有功能环境安装Windows用看这里ubuntu用户看这里使用方式:主要代码项目地址项目介绍 可以下载doc,ppt,pdf.对于doc文档可以下载,doc中的表格无法...
    99+
    2022-11-12
  • Python爬虫实现热门电影信息采集
    目录一、前言二、前期准备1、使用的软件2、需要用的模块3、模块安装问题4、如何配置pycharm里面的python解释器?5、pycharm如何安装插件?三、思路1、...
    99+
    2022-11-12
  • Python如何实现抖音热搜定时爬取功能
    这篇“Python如何实现抖音热搜定时爬取功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python如何实现抖音热搜定时...
    99+
    2023-06-29
  • Python爬虫怎么实现热门电影信息采集
    这篇文章主要介绍“Python爬虫怎么实现热门电影信息采集”,在日常操作中,相信很多人在Python爬虫怎么实现热门电影信息采集问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python爬虫怎么实现热门电影信...
    99+
    2023-06-21
  • Python爬取百度翻译实现中英互译功能
    目录基础步骤提交表单获取响应并处理结果消除警告main.pysign.py由于下学期报了一个Python的入门课程 所以寒假一直在自己摸索,毕竟到时候不能挂科,也是水水学分 最近心血...
    99+
    2022-11-13
  • Python实现爬取房源信息的示例详解
    目录前言分析页面,寻找切入点爬取数据整理数据,导出文件前言 最近由于工作突然变动,新的办公地点离现在的住处很远,必须要换房子租了。 我坐上中介的小电驴,开始探索城市各处的陌生角落。 ...
    99+
    2022-11-11
  • Python实现爬取腾讯招聘网岗位信息
    目录介绍效果展示实现思路源码展示介绍 开发环境 Windows 10 python3.6 开发工具 pycharm 库 numpy、matplotlib、time、xlutils.c...
    99+
    2022-11-12
  • Python 基于Selenium实现动态网页信息的爬取
    目录一、Selenium介绍与配置1.Selenium简介2. Selenium+Python环境配置二、网页自动化测试1.启动浏览器并打开百度搜索2.定位元素三、爬取动态网页的名人...
    99+
    2022-11-12
  • Python爬虫实现抓取电影网站信息并入库
    目录一.环境搭建1.下载安装包2.修改环境变量3.安装依赖模块二.代码开发三.运行测试1.新建电影信息表2.代码运行四.问题排查和修复1.空白字符报错2.请求报错一.环境搭建 1.下...
    99+
    2022-11-13
  • Python怎么实现爬取腾讯招聘网岗位信息
    本篇内容主要讲解“Python怎么实现爬取腾讯招聘网岗位信息”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python怎么实现爬取腾讯招聘网岗位信息”吧!介绍开发环境Windows 10pyth...
    99+
    2023-06-22
  • Python用正则表达式实现爬取古诗文网站信息
    目录分析古诗文网站1. 用正则表达式获取总页数2. 提取诗的标题3. 提取作者和朝代4. 提取诗的内容整理代码完整源代码总结分析古诗文网站 下图1展示了古诗文网站—》诗文 栏目的首页...
    99+
    2022-11-12
  • Python使用Selenium自动进行百度搜索的实现
    目录安装 Selenium写代码点位网页元素我们今天介绍一个非常适合新手的python自动化小项目,项目虽小,但是五脏俱全。它是一个自动化操作网页浏览器的小应用:打开浏览器,进入百度网页,搜索关键词,最后把搜索结果保...
    99+
    2022-06-02
    Python Selenium自动百度搜索 Python Selenium自动搜索
  • Python如何通过Scrapy框架实现爬取百度新冠疫情数据
    这篇文章主要介绍了Python如何通过Scrapy框架实现爬取百度新冠疫情数据,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。环境部署主要简单推荐一下插件推荐这里先推荐一个Go...
    99+
    2023-06-25
  • Python基于Selenium怎么实现动态网页信息的爬取
    这篇文章主要介绍“Python基于Selenium怎么实现动态网页信息的爬取”,在日常操作中,相信很多人在Python基于Selenium怎么实现动态网页信息的爬取问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答...
    99+
    2023-06-22
  • 利用Python通过获取剪切板数据实现百度划词搜索功能
    目录一、实现划词功能二、运行错误三、解决问题一、实现划词功能 说是划词翻译,实际上我们是通过获取用户的剪切板内容,通过一系列的操作得到的。首先呢,我们就先实现如何获取剪切板内容的程序...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作