Python 爬虫之简单的爬虫(二)
2023-12-17 23:50:33
爬取百度热搜榜
前言
每次打开浏览器,我基本上都会看一下百度热搜榜。这篇我就写一下如何获取百度的热搜榜信息吧。
如果到最后看的云里雾里的,请先看我写的上一篇《Python 爬虫之简单的爬虫(一)》https://blog.csdn.net/weixin_57061292/article/details/135038581
一、展示哪些东西
- 其实每个标题背后有很多数据类型,我挑一些有用的东西展示了出来。
- 其中有标记 五角星 的标题含义是看下图:
二、基本流程
主要是以下几部分(下文基本会按照这个步骤来写):
- 导入需要的库
- 要测试的网页
- 生成代理,请求网页
- 请求成功,解析网页,找到并保存想要的东西
- 请求失败,返回相应状态码
三、前期数据获取
1.引入库
代码如下:
# 将这个编码后的链接解码回原始的URL格式
from urllib.parse import unquote
# 用于发送 HTTP 请求
from bs4 import BeautifulSoup
# 这是一个用于解析 HTML 和 XML 文档
import requests
# 用于处理下面获取的数据
import json
记得看注释哦
2.请求解析获取
代码如下:
# 目标网页地址
url = 'https://www.baidu.com/'
# 定义请求头的浏览器代理,伪装成浏览器
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) '
'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.289 Safari/537.36',
'host': 'www.baidu.com'}
# 请求网页
response = requests.get(url, headers=headers)
print('status_code:', response.status_code)
# 解析 HTML 文档
soup = BeautifulSoup(response.text, "lxml")
# 获取相应标签里的内容
textarea = soup.find("textarea", id="hotsearch_data")
代码不多就三操作合一啦。
其它代码还好说,主要是最后一行代码,看下图应该就明白了(获取的也就是这个标签下的内容)。
四、后期数据处理
1.获取保存
代码如下:
# 进行切片处理无用信息,并用json格式读取数据
data_str = textarea.text.split('>')[-1] # 作用是把标签去掉,只保留热榜数据
data = json.loads(data_str)
# 打开一个文本文档并写入
with open('hotsearch.txt', 'w', encoding='utf-8') as f:
# 遍历这些数据
for item in data["hotsearch"]:
# 获取标题、链接、排名信息
card_title = item["card_title"]
linkurl = item["linkurl"]
index = item["index"]
hotTags = item["hotTags"]
heat_score = item["heat_score"]
# 写入文件
if hotTags == '3': # 表示这个标题当前有《热》的红色角标
f.write(f'标题:{card_title} \u2605 \u2605 \u2605 \u2605 \u2605 \n')
else:
f.write(f'标题:{card_title}\n')
f.write(f'链接:{unquote(linkurl)}\n')
f.write(f'热度:{heat_score}\n')
f.write(f'排名:{index}\n\n')
- 第一步:进行切片处理,把无用信息删掉,并用json格式读取数据。用json方便后期的数据处理,减少难度。
- 第二步:打开先打开一个文本文档,为了后面一边遍历数据内容一边写入文件。
- 第三步:就像开头展示的,把那五种数据类型获取到。
- 第四步:把获取到数据整理一下写入到文件中。
总结
写点爬虫小程序来替自己搜一些东西还挺有趣的。以前需要自己手动花老长时间从网上搜,现在程序刷的一下就好了。
文章来源:https://blog.csdn.net/weixin_57061292/article/details/135051002
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!