收藏文章 楼主

只需2步,教你用Python爬取百度热搜榜

版块:   类型:普通   作者:小羊羔links   查看:143   回复:0   获赞:0   时间:2022-07-24 02:43:56
热搜关键词一般就是指在一段时间范围内的各界大事与流行话题。此次我们将通过Python自带的Urllib模块与正则表达式,制作一个可以爬取百度热搜榜的爬虫程序。

1  分析数据

在浏览器中打开百度首页地址(https://www.baidu.com/ ,然后找到搜索框下面的“百度热搜”,如图1所示。

图1  确认“百度热搜”位置


在键盘中按下F12快捷键,打开浏览器开发者工具(这里使用谷歌浏览器 ,然后在顶部导航条中选择“Elements”选项,接着单击导航条左侧的图标,再用鼠标选中第一条热搜标题,此时将显示热搜信息所对应的HTML代码位置。具体操作步骤如图2所示。

图2  获取热搜标题对应的HTML代码


2  实现爬虫

在没有学习爬虫的解析模块前,可以使用re模块与正则表达式来实现数据的匹配。爬虫程序实现的具体步骤如下

(1 分别导入urllib.request与re模块,分别用于发送网络请求和数据的解析工作。代码如下

01  import urllib.request  # 导入urllib.request模块

02  import re              # 导入re模块



(2 创建send_request()方法,在该方法中需要先设置请求地址和请求头信息,然后发送网络请求,接着读取服务器响应的HTML代码并进行UTF-8解码,最后将HTML代码返回。代码如下

03  # 实现发送网络请求,返回响应结果

04  def send_request(url,headers):

05      # 创建Request对象

06      r = urllib.request.Request(url=url,headers=headers)

07      response = urllib.request.urlopen(r)  # 发送网络请求

08      # 读取HTML代码并进行utf-8解码

09      html_text = response.read().decode('utf-8')

10      return html_text



(3 创建interpreting_data()方法,在该方法中首先需要在HTML代码中提取热搜排名、热搜标题、热搜关键词以及热搜标题对应的地址,然后进行热搜关键词为空时的处理并打印爬取的热搜数据。代码如下

11  # 解析响应结果中的数据

12  def interpreting_data(html_text):

13      # 提取热搜排名

14      ranking_all = re.findall('<span class="title-content-index c-index-single c-index-single-hot.*?">(.*?)</span>',html_text)

15      # 提取热搜标题

16      title_all = re.findall('<span>(.*?)</span>',html_text)

17      # 提取热搜关键词

18      keyword_all = re.findall('<span class="title-content-mark c-text c-gap-left-small .*?">(.*?)</span>',html_text)

19      # 提取热搜标题对应的地址

20      href_all = re.findall('<a class="title-content c-link c-font-medium c-line-clamp1" href="(.*?)"',html_text)

21      for r,t,k,h in zip(ranking_all,title_all,keyword_all,href_all):

22          if k =='':    # 如果热搜关键词为空

23              print('排名 '+r,'热搜标题 '+t,'关键词 无','地址 '+h)

24          else:

25              print('排名 ' + r, '热搜标题 ' + t, '关键词 '+k, '地址 ' + h)

26          print()       # 打印空行



(4 创建程序入口,然后设置百度首页的请求地址与请求头信息,然后调用send_request()与interpreting_data()方法启动网络爬虫程序。代码如下

27  if __name__ == '__main__':

28      url = 'https://www.baidu.com/'  # 请求地址

29      # 定义请求头信息

30      headers = {'User-Agent''Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36'}

31      html_text = send_request(url=url,headers=headers)    # 调用自定义发送网络请求的方法

32      interpreting_data(html_text=html_text)               # 调用解析响应结果的方法



(5 爬虫程序运行结果如图3所示。

图3  爬取百度首页热搜信息


更多Python爬虫相关技术,推荐学习《Python网络爬虫从入门到实践》。全彩印刷,书中包括125个快速示例2个综合案例1个商业项目3张爬虫专属魔卡(电子版 源码电子书技术答疑等。现在购买,还享受每满100减50

【点击上图,进入图书详情页面】



↓点击“ ”

逛更多全彩好书

小羊羔锚文本外链网站长https://seo-links.cn 
回复列表
默认   热门   正序   倒序

回复:只需2步,教你用Python爬取百度热搜榜

Powered by 小羊羔外链网 8.3.11

©2015 - 2024 小羊羔外链网

免费发软文外链 鄂ICP备16014738号-6

您的IP:3.145.47.253,2024-04-24 08:46:55,Processed in 0.05267 second(s).

支持原创软件,抵制盗版,共创美好明天!
头像

用户名:

粉丝数:

签名:

资料 关注 好友 消息