快速获取澎湃热榜数据:Python爬虫+API接口搭建实战教程


一、前言

澎湃新闻是国内知名的新闻平台,其热榜数据反映了当前社会热点。本教程将手把手教你通过Python爬虫抓取澎湃热榜数据,并用Flask框架搭建轻量级API接口,方便二次开发或数据分析。

点击获取key和secret

二、澎湃热榜数据接口分析

目标地址‌
通过浏览器开发者工具分析,澎湃热榜数据通过以下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

(注:实际开发请遵守相关法律法规,本代码仅供学习交流)‌

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值