【爬虫实战】用python爬今日头条热榜TOP50榜单!

一、爬取目标

您好!我是@马哥python说,一名10年程序猿。

今天分享一期爬虫案例,爬取的目标是:今日头条热榜的榜单数据。

打开今日头条 首页,在页面右侧会看到头条热榜,如下:

爬取以上6个关键字段,含:

热榜排名,热榜标题,热度值,热榜标签,热榜分类,热榜链接。

开发者模式分析:

二、爬取结果

爬取结果截图:

三、代码讲解

首先,导入需要用到的库:

python 复制代码
import requests
import pandas as pd
import re

定义一个请求头:(爬取目标较简单,一个User-agent即可)

python 复制代码
# 请求头
h1 = {
	'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.4 Safari/605.1.15',
}

定义请求地址:

python 复制代码
url = 'https://www.toutiao.com/hot-event/hot-board/?origin=toutiao_pc'

用requests发送请求:

python 复制代码
# 发送请求
response = requests.get(url, headers=h1)

查看响应码并以json方式接收返回数据:

python 复制代码
# 查看响应码
print(r.status_code)
# 接收返回数据
json_data = r.json()

定义一些空列表,用于存放数据:

python 复制代码
title_list = []  # 热榜标题
value_list = []  # 热度值
url_list = []  # 热榜链接
category_list = []  # 热榜分类
label_list = []  # 热榜标签

以"热榜标题"字段为例:

python 复制代码
for data in json_data['data']:
	# 热榜标题
	title = data['Title']
	print('热榜标题:', title)
	title_list.append(title)

其中,热榜链接比较特殊,接口中返回的url很长,形如:

可以看到,url中从?往后,都是不必要的请求参数。

所以,用正则表达式把?后面的全部删掉,提取出id,再进行拼接url,如下:

python 复制代码
# 正则表达式提取出链接id
url3 = re.search(r"(?<=https:\/\/www\.toutiao\.com\/trending\/)\d+", url2).group(0)
# 拼接链接
url4 = 'https://www.toutiao.com/trending/' + str(url3)

最后,把所有字段存放的列表数据组成Dataframe格式:

python 复制代码
# 把列表数据组装成Dataframe数据
df = pd.DataFrame(
	{
		'热榜排名': range(1, data_num + 1),  # 一共50条
		'热榜标题': title_list,
		'热度值': value_list,
		'热榜标签': label_list,
		'热榜分类': category_list,
		'热榜链接': url_list,
	}
)

进一步保存到csv文件里:

python 复制代码
# 保存到csv文件
df.to_csv(result_file, header=True, index=False, encoding='utf_8_sig')

以上,核心逻辑讲解完毕。

代码中还含有:解析热度值、热榜标签、热榜分类、热榜链接字段等,详见文末。

四、技术总结

爬取技术流程:

  1. requests 发送请求
  2. json 解析数据
  3. re 正则表达式提取文本
  4. pandas 保存csv

五、演示视频

演示视频: 代码演示:用python爬头条热榜TOP50榜单!


我是@马哥python说,一名10年程序猿,持续分享python干货中!

相关推荐
xnglan14 分钟前
蓝桥杯手算题和杂题简易做法
数据结构·数据库·c++·python·算法·职场和发展·蓝桥杯
小徐敲java1 小时前
python-pycharm切换python各种版本的环境与安装python各种版本的环境(pypi轮子下载)
开发语言·python·pycharm
天才测试猿1 小时前
接口自动化测试难点:数据库验证解决方案
自动化测试·软件测试·数据库·python·测试工具·职场和发展·接口测试
java1234_小锋4 小时前
[免费]基于Python的影视数据可视化分析系统(Flask+echarts)【论文+源码+SQL脚本】
python·信息可视化·flask·python影视分析·python电影分析
精致先生6 小时前
Streamlit实现Qwen对话机器人
python·机器人·大模型·streamlit
蜀中廖化7 小时前
机器学习:基于OpenCV和Python的智能图像处理 实战
python·opencv·机器学习
java1234_小锋8 小时前
一周学会Matplotlib3 Python 数据可视化-绘制热力图(Heatmap)
开发语言·python·信息可视化·matplotlib·matplotlib3
程序员岳焱9 小时前
Java 调用 Python 脚本:实现 HelloWorld
java·后端·python
R-G-B10 小时前
【P27 4-8】OpenCV Python——Mat类、深拷贝(clone、copyTo、copy)、浅拷贝,原理讲解与示例代码
人工智能·python·opencv·浅拷贝·深拷贝·opencv python·mat类
码界筑梦坊10 小时前
135-基于Spark的抖音数据分析热度预测系统
大数据·python·数据分析·spark·毕业设计·echarts