一、前言
澎湃新闻是国内知名的新闻平台,其热榜数据反映了当前社会热点。本教程将手把手教你通过Python爬虫抓取澎湃热榜数据,并用Flask框架搭建轻量级API接口,方便二次开发或数据分析。
二、澎湃热榜数据接口分析
目标地址
通过浏览器开发者工具分析,澎湃热榜数据通过以下API动态加载(需自行替换时间戳):
text
Copy Code
https://www.thepaper.cn//load_hot_top.jsp?hotIds=1,2,3,4,5,6,7,8,9,10&_=1718000000000
返回格式
JSON结构,包含标题、链接、热度值等关键信息。
三、代码实现(Python 3)
1. 爬虫核心代码
python
Copy Code
import requests
import json
import time
def fetch_pengpai_hotlist():
url = "https://www.thepaper.cn//load_hot_top.jsp"
params = {
"hotIds": "1,2,3,4,5,6,7,8,9,10", # 热榜条目ID(固定)
"_": int(time.time() * 1000) # 时间戳防缓存
}
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
"Referer": "https://www.thepaper.cn/"
}
response = requests.get(url, params=params, headers=headers)
if response.status_code == 200:
return response.json()
else:
print("请求失败,状态码:", response.status_code)
return None
# 测试爬虫
hot_data = fetch_pengpai_hotlist()
if hot_data:
print(json.dumps(hot_data, indent=2, ensure_ascii=False))
2. 数据清洗与格式化
python
Copy Code
def parse_hotlist(raw_data):
hot_list = []
for item in raw_data:
hot_list.append({
"title": item.get("cont_title"),
"url": f'https://www.thepaper.cn/{item.get("cont_id")}',
"views": item.get("total"),
"rank": item.get("rank")
})
return sorted(hot_list, key=lambda x: x["rank"])
parsed_data = parse_hotlist(hot_data)
print(parsed_data)
3. Flask API接口搭建
python
Copy Code
from flask import Flask, jsonify
from threading import Timer
app = Flask(__name__)
cached_data = None
def update_cache():
global cached_data
raw_data = fetch_pengpai_hotlist()
if raw_data:
cached_data = parse_hotlist(raw_data)
# 每30分钟更新一次
Timer(1800, update_cache).start()
@app.route('/api/hot', methods=['GET'])
def get_hotlist():
if cached_data:
return jsonify({"code": 200, "data": cached_data})
else:
return jsonify({"code": 500, "msg": "数据暂未就绪"})
if __name__ == '__main__':
update_cache() # 启动时立即获取数据
app.run(host='0.0.0.0', port=5000)
四、使用说明
安装依赖
bash
Copy Code
pip install requests flask
启动API服务
bash
Copy Code
python pengpai_hot_api.py
接口调用
访问 http://localhost:5000/api/hot 获取最新热榜数据。
五、注意事项
频率控制:建议请求间隔不低于10分钟,避免给服务器造成压力
数据缓存:服务内置30分钟缓存机制,无需重复请求
版权声明:数据仅限个人学习使用,请遵守澎湃网相关规定
六、效果展示
json
Copy Code
{
"code": 200,
"data": [
{
"title": "全国多地调整公积金政策",
"url": "https://www.thepaper.cn/newsDetail_123456",
"views": 245800,
"rank": 1
},
...
]
}
七、扩展方向
添加数据库存储(MySQL/MongoDB)
集成企业微信/钉钉通知功能
结合自然语言处理进行舆情分析
完整代码已上传Github:https://github.com/example/pengpai-hotlist
(注:实际开发请遵守相关法律法规,本代码仅供学习交流)