实现百度搜索实时热点爬虫

  • 相关技术介绍
    • Request库
    • Beautiful Soup库
  • 代码实现
    • 代码分析
  • 项目延伸讨论

本教程实现简单的百度榜单实时热点爬虫,爬取百度实时热点。


实现的思路是:首先爬取热榜页面内容,其次是解析热榜页面的内容,最终到获取到需要的内容。
在展示代码之前,我们先介绍代码中使用到的一些python库

相关技术介绍

Request库

Requests(https://github.com/psf/requests)库由Kenneth Reitz创建,支持Python 2.6-2.7, 3.3-3.7。Requests库可以实现HTTP协议中的GET、OPTIONS、HEAD、POST、PUT、PATCH、DELETE方法,还可以实现HTTPS代理,流下载,文件分块上传等。且Requests的参数设置采用Key/Value键值对的方式进行设置。我们在代码中使用Requests库用来构建HTTP请求获取页面。
安装Requests库时,如果安装了pip之后,直接执行命令:pip install requests即可安装Requests库。

Beautiful Soup库

Beautiful Soup(https://www.crummy.com/software/BeautifulSoup/)是一个可以从HTML或XML文件中提取数据的Python库。目前使用的是Beautful Soup 4。使用时,将一个HTML或XML文档传入Beautiful Soup,将得到一个bs4的对象,Beautiful Soup将传入的文档转换成一个树形对象。Beautiful Soup可以对文档树进行遍历、查找和修改。
安装Beautiful Soup库时,如果安装了pip之后,直接执行命令:pip install beautifulsoup4 即可安装Beautiful Soup库。
这里需要了解TAG的含义。TAG是HTML中的一个标签。如下所示:

<a class='cls' href='www.example.com'>Hello world</a>

a就是一个tag,“href”和“class”均为a的属性。获取a的href的属性,采用a.href即可获取属性值。

代码实现

代码实现如下:

'''
爬取百度实时热点排行榜
'''import requests
from bs4 import BeautifulSoupheaders = {'User-Agent': 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0','Connection': 'keep - alive'}url = 'http://top.baidu.com/buzz?b=1'request = requests.get(url, headers)
# 修改为gb18030编码
request.encoding = 'gb18030'
soup = BeautifulSoup(request.text, 'lxml')
items_body = soup.find(class_='list-table')
tr_soup = items_body.find_all('tr')
num = 1
for i in tr_soup:content = i.find(class_='list-title')if content != None:# 输出编号及热搜内容print('{0:2d}.{1}'.format(num, content.get_text()))# 热点链接link = content.get('href')

代码分析

现对上述代码做简单的分析。

requests.get(url, headers)

使用Requests库的get方法构建HTTP的GET请求。url是百度热榜地址。headers中的内容,均以Key/Value键值对方式构建。这里主要构建“User-Agent”。本示例中使用和讲解中使用的浏览器是火狐浏览器。打开浏览器中的“工具”->“Web 开发者”->“Web 控制台”。随便打开一个网页,查看“Web 控制台”上的“网络”->“消息头”->“请求头”中的“User-Agent”,将“User-Agent”内容复制到代码中。

request.encoding = 'gb18030'

对获取到的request文档树采用“gb18030”的编码格式。
GB 18030GB 2312GBK 兼容,是最新国家标准 GB 18030-2005《信息技术中文编码字符集》,收录有汉字七万多个。

soup = BeautifulSoup(request.text, 'lxml')

这里采用效率更高的“lxml”解析器来解析HTML文档。
使用浏览器打开百度热榜链接,在“Web 控制台”下,使用“查看器”定位到百度热榜关键字内容处理。

在“查看器”中,所有的热榜内容均是包含在一个“table”中。

为了取得每个热点的内容,只需要遍历这个“table”,即可取得热点的关键字。

items_body = soup.find(class_='list-table')

在Beautiful Soup中,搜索tag的方法有find_all() 和find() ,其中find_all() 方法搜索所有的tag,并返回所有满足要求的tag,而find() 方法则返回第一个查找到的tag。关于find() 及 find_all() 的详细用法,读者可以查看Beautiful Soup的相关文档。
在“table”下的tag,只有属性是“list-title”的tag才具有有效的内容。于是需要对名称为“tr”的tag进行过滤。

tr_soup = items_body.find_all('tr')
for i in tr_soup:content = i.find(class_='list-title')

这样就可以搜索到满足要求的tag。

content.get_text()

对于热点内容的关键字,只需要使用get_text()方法即可获得。

# 热点链接
link = content.get('href')

热点链接即可通过get(‘href’)来获得该属性值。
代码执行结果如下所示:

项目延伸讨论

上述代码实现比较简单。可以在该项目基础上,做一些扩展,比如定时爬取热榜信息,保存到数据库中,在一周或一个月内,可以对爬取的数据进行分析,得到搜索的热点词等内容。也可以做成一个公众号爬虫机器人,每天定时将热榜信息推送给关注公众号的用户等。

实现百度搜索实时热点爬虫相关推荐

  1. python爬去百度搜索结果_python爬虫获取百度搜索结果的简单示例

    编程之家收集整理的这篇文章主要介绍了python爬虫获取百度搜索结果的简单示例,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考. 感兴趣python爬虫获取百度搜索结果的简单示例的小伙伴, ...

  2. 屏蔽关闭百度搜索风云热点的方法

    最终是三种方法如下,根据个人喜好使用吧 一.改动下网址 打开下面的主页就好了,不影响搜索结果 https://www.baidu.com/baidu.html?from=noscript https: ...

  3. Python爬取百度搜索风云榜实时热点.

    Python爬虫实战源码合集(持续更新) 百度搜索风云榜:http://top.baidu.com/ 源码: import os import json from datetime import da ...

  4. android开发微博搜索,一款帮助用户自动提取微博热搜、知乎热榜、百度实时热点条目中与特定领域...

    HotDetector(全网热门探测仪) 全网热门探测仪一款帮助用户自动提取微博热搜.知乎热榜.百度实时热点条目中与特定领域(科技.娱乐.体育.自定义)有关内容的实用App. 它使用Java SE 8 ...

  5. python网页版百度_python,_爬虫 页面不存在_百度搜索,python - phpStudy

    爬虫 页面不存在_百度搜索 1.学写爬虫,遇到一个问题,加了values={"wd":"test","ie":"utf-8&quo ...

  6. python爬虫代码实例-Python爬虫爬取百度搜索内容代码实例

    这篇文章主要介绍了Python爬虫爬取百度搜索内容代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 搜索引擎用的很频繁,现在利用Python爬 ...

  7. java调用百度搜索_Java爬虫怎么调用百度搜索引擎,对关键字的网页爬取?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 package com.wjd.baidukey.crawler; import java.io.ByteArrayInputStream; import ...

  8. 微课--Python网络爬虫采集百度搜索结果(例4-5)

    推荐教材: <Python网络程序设计(微课版)>,ISBN:978-7-3025-8312-7,董付国,清华大学出版社,2021年8月出版 配套资源: 教学大纲.445页PPT.91个例 ...

  9. python爬取热门新闻每日排行_用python查看百度搜索中今日热点事件排行榜

    大家好,我是咿哑呀.我们知道,在百度搜索中,查看今日热点事件排行榜时,可以打开网址"http://top.baidu.com/buzz?b=341&c=513&fr=topb ...

  10. 【爬虫】爬取百度搜索结果页面

    今日看了一下爬虫,写了一个爬取百度搜索页面的小程序.可以在代码中改动搜索词,代码如下: #coding=utf-8 #python version:2.7 #author:sharpdeepimpor ...

最新文章

  1. AI 还原宋代皇帝,原来这么帅?!
  2. 重磅!阿里巴巴江苏总部落户南京建邺区
  3. PHP Hashtable实现源码分析
  4. 让CentOS能用yum自动安装rar和unrar
  5. 100*100的 canvas 占多少内存?
  6. 如何写年终总结(转)
  7. vue3被删除的两个功能
  8. mapInfo文件格式详解,其中有“细说Mapinfo索引文件*.ind”
  9. Highcharts-制作图表的js库
  10. c语言获取随机数硬币问题,算法 – 从硬币中创建一个随机数生成器
  11. 【教程】ESP32连接华为云IoT平台
  12. 【python量化】python通过新浪财经获取金融衍生品历史数据
  13. 机房监控系统的功能特点以及工作原理!
  14. 使用RT-Thread Studio DIY 迷你桌面时钟(四)| OLED显示时钟和温湿度(cpp组件 + u8g2软件包)
  15. 西门子1200plc轴运动控制程序,程序包括有调用轴控制块做的控制3个伺服,1个电缸
  16. 手把手教你开发galgame 游戏(galgame 游戏引擎开发入门经典教程)
  17. 禁止暴风影音的自动升级的方法
  18. 满帮Q4营收14.3亿元:履约订单数增长41.6%,上线货主信用体系规范服务
  19. Java修炼之凡界篇 筑基期 第05卷 数组 第04话 数组的使用
  20. 【笔记】迈向人工智能 | Coursera-斯坦福大学-机器学习-吴恩达(已完结)

热门文章

  1. 第13期 《仰望星空,脚踏实地》 12月刊
  2. vue校验输入框不能有中文
  3. MDK中编译报错 Error: L6218E: Undefined symbol SystemInit (referred from startup_cmsdk_cm0.o).
  4. docker安装dejavu
  5. Nagios常见问题集锦
  6. 设置idea的ant工具的代理
  7. wii模拟器linux版,Dolphin模拟器_Dolphin模拟器最新版下载[Wii模拟器]-下载之家
  8. 德州大学达拉斯分校计算机专业博士,德克萨斯大学达拉斯分校计算机科学理科硕士入学条件及实习就业...
  9. matlab连接mysql有什么用_MATLAB连接SQLServer和MySql数据库
  10. 程序员坐行李箱迎寒风编码2小时,上热搜!你怎么看?