python爬虫实战(3)--爬取某乎热搜

1. 分析爬取地址

打开某乎首页,点击热榜

这个就是我们需要爬取的地址,取到地址某乎/api/v3/feed/topstory/hot-lists/total?limit=50&desktop=true

定义好请求头,从Accept往下的请求头全部复制,转换成json

headers = {
    'Accept': '*/*',
    'Accept-Encoding': 'gzip, deflate',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Cookie': '你的请求头中的cookie',
    'Sec-Ch-Ua': 'Not/A)Brand\';v=\'99\', \'Google Chrome\';v=\'115\', \'Chromium\';v=\'115',
    'Sec-Ch-Ua-Mobile': '?0',
    'Sec-Ch-Ua-Platform': 'Windows',
    'Sec-Fetch-Dest': 'empty',
    'Sec-Fetch-Mode': 'cors',
    'Sec-Fetch-Site': 'same-origin',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',
    'X-Ab-Param': '',
    'X-Ab-Pb': 'CgInBxIBAA==',
    'X-Api-Version': '3.0.76',
    'X-Requested-With': 'fetch',
    'X-Zse-93': '101_3_3.0',
    'X-Zse-96': '2.0_6hUp=vt8=9zOcwtPHcLjutT0sL2PhwOPys0v=fvQr7yneBCmMO2zkvXcYfoc5esu'
}

2. 分析请求结果

通过请求可以看出,hot-lists/total?limit=50&desktop=true请求后的返回参数直接是json格式,则不需要单独处理

定义好需要抓取的参数按元素获取即可

    order_list = []  # 热榜排名
    title_list = []  # 热榜标题
    desc_list = []  # 热榜描述
    url_list = []  # 热榜链接
    hot_value_list = []  # 热度值
    answer_count_list = []  # 回答数
    data_list = json_data['data']
    order = 1  # 热榜排名初始值

GET请求接口

    response = requests.get(url=url, headers=headers)
    json_data = response.json()

循环数组json并赋值

        order_list.append(order)
        # 热榜标题
        title = data['target']['title_area']['text']
        print(order, '热榜标题:', title)
        title_list.append(title)
        desc_list.append(data['target']['excerpt_area']['text'])
        url_list.append(data['target']['link']['url'])
        hot_value_list.append(data['target']['metrics_area']['text'])
        answer_count_list.append(data['feed_specific']['answer_count'])
        order += 1```
将结果导出到csv,注意定义一下编码集为utf_8_sig

df = pd.DataFrame(
    {
        '热榜排名': order_list,
        '热榜标题': title_list,
        '热榜链接': url_list,
        '热度值': hot_value_list,
        '回答数': answer_count_list,
        '热榜描述': desc_list,
    }
)
# 保存结果到csv文件
df.to_csv('知乎热榜.csv', index=False, encoding='utf_8_sig')

### 3. 结果验证
![在这里插入图片描述](https://img-blog.csdnimg.cn/eb0b9fdced6241e9bd7d6e941826b389.png)
###  注意:如果请求返回的json格式乱码,调整请求头Accept-Encoding,去掉br后即可
相关推荐
吾爱星辰1 小时前
Kotlin 处理字符串和正则表达式(二十一)
java·开发语言·jvm·正则表达式·kotlin
ChinaDragonDreamer1 小时前
Kotlin:2.0.20 的新特性
android·开发语言·kotlin
FreakStudio1 小时前
全网最适合入门的面向对象编程教程:56 Python字符串与序列化-正则表达式和re模块应用
python·单片机·嵌入式·面向对象·电子diy
IT良1 小时前
c#增删改查 (数据操作的基础)
开发语言·c#
丶21361 小时前
【CUDA】【PyTorch】安装 PyTorch 与 CUDA 11.7 的详细步骤
人工智能·pytorch·python
Kalika0-02 小时前
猴子吃桃-C语言
c语言·开发语言·数据结构·算法
_.Switch2 小时前
Python Web 应用中的 API 网关集成与优化
开发语言·前端·后端·python·架构·log4j
代码雕刻家2 小时前
课设实验-数据结构-单链表-文教文化用品品牌
c语言·开发语言·数据结构
一个闪现必杀技2 小时前
Python入门--函数
开发语言·python·青少年编程·pycharm
Fan_web2 小时前
jQuery——事件委托
开发语言·前端·javascript·css·jquery