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后即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/52302.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Levels - 场景参考:山脉景观(Landscape Mountains)

一些从前的笔记的归档,记录了一些UE4资产的相关信息; 山脉景观(Landscape Mountains): 项目的地形材质比较复杂,有几个比较重要的大效果功能,一个是沉积岩的效果: 沉积岩效果的功能…

保研面试题复习

信源/信道编码的目的和种类? 这个图是每个人在学习通信原理的时候,都会遇到的图。包含了三要素:信源、信道和信宿。这个图直接可以回答最开始的问题,所谓信源编码就是针对信源编码,所谓信道编码就是针对信道编码。 有…

python 使用 pdf2image 库将PDF转换为图片

python 使用 pdf2image 库将PDF转换为图片 初环境步骤一:安装pdf2image库步骤二:导入必要的库步骤三:指定PDF文件路径步骤四:将PDF转换为图片步骤五:保存图像为图片文件完整代码运行结果 在数字化时代,PDF&…

如何在 Ubuntu 中安装最新的 Python 版本

动动发财的小手,点个赞吧! Python 是增长最快的主要通用编程语言。其原因有很多,例如其可读性和灵活性、易于学习和使用、可靠性和效率。 目前使用的 Python 有两个主要版本 – 2 和 3(Python 的现在和未来)&#xff1…

Unity——动效与缓动动画

游戏体验是综合性的,音效、剧情、界面设计、美术风格和玩法内涵都是游戏体验的组成部分。而且一些细节上的美化,会出乎意料地带给用户愉悦感和满足感。这些细节包括跳跃的图标、闪烁的文字、流畅滑动的通讯录等,可以统称为动态效果或动效。 …

通过运行中的容器生成 Docker Compose 配置文件

背景 笔者之前有一次不小心删除了原始的 docker-compose.yml 文件,不过正在运行的 Docker 容器还在,找了许久,发现一个方法可以从这些容器中生成一个等效的 Docker Compose 配置文件。本文将介绍使用 autocompose 工具从正在运行的容器中反向…

http协议和HTTP编程流程

目录 1、http协议 (1)概念 (2)使用的端口 (3)长连接和短连接 (4)常见web服务器 2、https(443) 3、浏览器连接服务器编程 1、http协议 (超文…

mysql insert出现主键冲突错误的解决方法

mysql insert出现主键冲突错误的解决方法 insert 时防止出现主键冲突错误的方法 在mysql中插入数据的时候常常因为主键存在而冲突报错,下面有两个解决方法: 1 在insert 语句中添加ignore 关键字 insert ignore into table (id,name) values (1,username)…

Linux下的系统编程——makefile入门(四)

前言: 或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专…

【git】工作场景中常用的git命令

工作场景中常用的git命令 1. 必备改名改邮箱拉代码下来并且创建新分支git commit回滚某个文件删除分支 工作场景中常用的git命令,记录下来方便调取 1. 必备 改名改邮箱 一般与他人合作,至少你提交的名字得被人熟知或者遵循规范,因此需要更改…

【业务功能篇74】三高微服务项目springboot-springcloud

三高指的是:高性能、高并发、高可用 2.项目架构 2.1 系统架构图 整体的项目架构图如下 2.2 业务组成 整体的项目业务组成如下

ubuntu can应用开发环境搭建指南

sudo apt-get update sudo apt-get install can-utils libsocketcan-dev can数据发送这个采用来自网上的一段代码进行测试: can_send.c代码内容如下: /* 1. 报文发送程序 */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <…

SpringCloud

SpringCloud组件 服务注册中心/服务治理 Eureka&#xff1a;Java 写的&#xff0c;官网停止更新&#xff0c;AP&#xff0c;可视化页面&#xff0c;可以设置自我保护机制开关Zookeeper&#xff1a;CP&#xff0c;Java 写的&#xff0c;临时节点&#xff0c;没有可视化页面Cons…

GO学习之 数据库(Redis)

GO系列 1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 8、GO学习之 函数(Function) 9、GO学习之 接口(Interface) 10、GO学习之 网络通信(Net/Htt…

Python 密码破解指南:10~14

协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【OpenDocCN 饱和式翻译计划】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 收割 SB 的人会被 SB 们封神&#xff0c;试图唤醒 SB 的人是 SB 眼中的 SB。——SB 第三定律 十、加…

VSCode 如何解决 scanf 的输入问题——Code is already running!

文章如何使用 VSCode 软件运行C代码中已经介绍了如何在 VSCode 软件中运行C代码&#xff0c;但最近在使用 scanf 想从键盘输入时&#xff0c;运行代码后显示“Code is already running!”&#xff0c;如下图所示&#xff0c;在输出窗口是无法通过键盘输入的。 解决办法如下&am…

TCP编程流程

目录 1、主机字节序列和网络字节序列 2、套接字地址结构 3、IP地址转换函数 4、TCP协议编程&#xff1a; &#xff08;1&#xff09;服务器端&#xff1a; &#xff08;2&#xff09;客户端: 1、主机字节序列和网络字节序列 主机字节序列分为大端字节序和小端字节序 大端…

Qt 阴影边框

阴影边框很常见&#xff0c;诸如360以及其他很多软件都有类似效果&#xff0c;了解CSS3的同学们应该都知道box-shadow&#xff0c;它就是来设定阴影效果的&#xff0c;那么Qt呢&#xff1f;看过一些资料&#xff0c;说是QSS是基于CSS2的&#xff0c;既然如此&#xff0c;box-sh…

Docker安装Oracle数据库打开、链接速度很慢

问题&#xff1a; 使用Docker安装Oracle数据库打开、链接速度很慢&#xff0c;明显的在在转圈严重影响效率。 解决&#xff1a; 排查到DNS时&#xff0c;发现宿主机DNS配置清空后&#xff0c;通过JDBC连接目标Oracle数据库速度很快 进入容器中进行测试&#xff0c;发现清空DNS…

【核磁共振成像】方格化重建

目录 一、缩放比例二、方格化变换的基础三、重建时间四、方格化核 一、缩放比例 对于笛卡尔K空间直线轨迹数据可直接用FFT重建&#xff0c;而如果K空间轨迹的任何部分都是非均匀取样的 可用DFT直接重建&#xff0c;有时称为共轭相位重建&#xff0c;但此法太慢不实用。把数据再…