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

2023年 9月 22日 66.0k 0

一、爬取目标

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

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

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

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

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

开发者模式分析:
开发者分析

二、爬取结果

爬取结果截图:
部分数据

三、代码讲解

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

import requests
import pandas as pd
import re

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

# 请求头
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',
}

定义请求地址:

url = 'https://www.toutiao.com/hot-event/hot-board/?origin=toutiao_pc'

用requests发送请求:

# 发送请求
response = requests.get(url, headers=h1)

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

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

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

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

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

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

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

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

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

# 正则表达式提取出链接id
url3 = re.search(r"(?

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论