【python】爬取知乎热榜Top50保存到Excel文件中【附源码】

欢迎来到英杰社区icon-default.png?t=N7T8https://bbs.csdn.net/topics/617804998

   一、导入必要的模块:

    这篇博客将介绍如何使用Python编写一个爬虫程序,从斗鱼直播网站上获取图片信息并保存到本地。我们将使用requests模块发送HTTP请求和接收响应,以及os模块处理文件和目录操作。

        如果出现模块报错

        进入控制台输入:建议使用国内镜像源

pip install requests -i https://mirrors.aliyun.com/pypi/simple

         我大致罗列了以下几种国内镜像源:

        

清华大学
https://pypi.tuna.tsinghua.edu.cn/simple阿里云
https://mirrors.aliyun.com/pypi/simple/豆瓣
https://pypi.douban.com/simple/ 百度云
https://mirror.baidu.com/pypi/simple/中科大
https://pypi.mirrors.ustc.edu.cn/simple/华为云
https://mirrors.huaweicloud.com/repository/pypi/simple/腾讯云
https://mirrors.cloud.tencent.com/pypi/simple/

    

二、发送GET请求获取响应数据:

        设置了请求头部信息,以模拟浏览器的请求,函数返回响应数据的JSON格式内容。

def get_html(url):header = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'}response = requests.get(url=url, headers=header)# print(response.json())html = response.json()return html

        如何获取请求头:

        火狐浏览器:

  1. 打开目标网页并右键点击页面空白处。
  2. 选择“检查元素”选项,或按下快捷键Ctrl + Shift + C(Windows)
  3. 在开发者工具窗口中,切换到“网络”选项卡。
  4. 刷新页面以捕获所有的网络请求。
  5. 在请求列表中选择您感兴趣的请求。
  6. 在右侧的“请求标头”或“Request Headers”部分,即可找到请求头信息。

     将以下请求头信息复制出来即可

三、代码实现

这段代码是用来爬取知乎热榜数据并保存到 Excel 文件中的。具体实现方法如下:

  1. 定义了一个函数 get_time,用于获取当前时间,并可以按照指定的格式进行输出。

def get_time(fmt:str='%Y-%m-%d %H-%M-%S') -> str:'''获取当前时间'''ts = time.time()ta = time.localtime(ts)t = time.strftime(fmt, ta)return t
  1. 定义了一个函数 save_hot_list,用于保存热榜数据到 Excel 文件中。

def save_hot_list() -> None:# 请求头headers = {
​'User-Agent': 'osee2unifiedRelease/4318 osee2unifiedReleaseVersion/7.7.0 Mozilla/5.0 (iPhone; CPU iPhone OS 14_4_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148','Host': 'api.zhihu.com',
​
​}# 请求参数params = (('limit', '50'),('reverse_order', '0'),)# 发送请求response = requests.get('https://zhihu.com/topstory/hot-list', headers=headers, params=params)
​items = response.json()['data']

首先定义请求头和请求参数,然后发送 GET 请求获取知乎热榜数据。其中 response.json()['data'] 取出了返回结果中的 data 字段,即热榜列表数据。

    rows = []now = get_time()# 取日期为文件夹名称dir_path = now.split(' ')[0]# 文件夹不存在则创建if not os.path.exists(dir_path):os.makedirs(dir_path)

定义一个空列表 rows 来存储热榜数据,然后获取当前时间并将其拆分为日期和时间两个部分。这里我们只需要日期部分作为保存数据的文件夹名称,如果这个文件夹不存在,则创建它。

  
  for rank, item in enumerate(items, start=1):target = item.get('target')title = target.get('title')answer_count = target.get('answer_count')hot = int(item.get('detail_text').split(' ')[0])follower_count = target.get('follower_count')question_url = target.get('url').replace('api', 'www').replace('questions', 'question')rows.append({'排名': rank,'标题': title,'回答数': answer_count,'关注数': follower_count,'热度(万)': hot,'问题链接': question_url})

遍历全部热榜数据,并从中取出我们需要的属性,包括:标题、回答数、关注数、热度和问题链接。将这些属性添加到 rows 列表中。

    df = pd.DataFrame(rows)now = get_time()excel_path = dir_path+'/Yan-英杰.xlsx'df.to_excel(excel_path, index=None)print(now, '的热榜数据数据已保存到文件', excel_path)

rows 列表转化为 Pandas 的 DataFrame,并将其保存到 Excel 文件中。Excel 文件的名称以当前日期作为文件夹名称,以 "Yan-英杰.xlsx" 作为文件名。最后输出保存完成的信息。

# 保存热榜数据
save_hot_list()

调用 save_hot_list 函数来执行保存操作。

四、效果图:

五、完整代码

import requests
import pandas as pd
import time
import osdef get_time(fmt:str='%Y-%m-%d %H-%M-%S') -> str:'''获取当前时间'''ts = time.time()ta = time.localtime(ts)t = time.strftime(fmt, ta)return tdef save_hot_list() -> None:# 请求头headers = {'User-Agent': 'osee2unifiedRelease/4318 osee2unifiedReleaseVersion/7.7.0 Mozilla/5.0 (iPhone; CPU iPhone OS 14_4_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148','Host': 'api.zhihu.com',}# 请求参数params = (('limit', '50'),('reverse_order', '0'),)# 发送请求response = requests.get('https://zhihu.com/topstory/hot-list', headers=headers, params=params)items = response.json()['data']rows = []now = get_time()# 取日期为文件夹名称dir_path = now.split(' ')[0]# 文件夹不存在则创建if not os.path.exists(dir_path):os.makedirs(dir_path)# 遍历全部热榜,取出几个属性for rank, item in enumerate(items, start=1):target = item.get('target')title = target.get('title')answer_count = target.get('answer_count')hot = int(item.get('detail_text').split(' ')[0])follower_count = target.get('follower_count')question_url = target.get('url').replace('api', 'www').replace('questions', 'question')rows.append({'排名': rank,'标题': title,'回答数': answer_count,'关注数': follower_count,'热度(万)': hot,'问题链接': question_url})df = pd.DataFrame(rows)now = get_time()excel_path = dir_path+'/Yan-英杰.xlsx'df.to_excel(excel_path, index=None)print(now, '的热榜数据数据已保存到文件', excel_path)# 保存热榜数据
save_hot_list()

   给大家推荐一个网站

    IT今日热榜 一站式资讯平台


        里面包含了上百个IT网站,欢迎大家访问:IT今日热榜 一站式资讯平台

   iToday,打开信息的新时代。作为一家创新的IT数字媒体平台,iToday致力于为用户提供最新、最全面的IT资讯和内容。里面包含了技术资讯、IT社区、面试求职、前沿科技等诸多内容。我们的团队由一群热爱创作的开发者和分享的专业编程知识爱好者组成,他们精选并整理出真实可信的信息,确保您获得独特、有价值的阅读体验。随时随地,尽在iToday,与世界保持连接,开启您的信息新旅程!

IT今日热榜 一站式资讯平台IT今日热榜汇聚各类IT热榜:虎嗅、知乎、36氪、京东图书销售、晚点、全天候科技、极客公园、GitHub、掘金、CSDN、哔哩哔哩、51CTO、博客园、GitChat、开发者头条、思否、LeetCode、人人都是产品经理、牛客网、看准、拉勾、Boss直聘http://itoday.top/#/

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

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

相关文章

R的seurat和python的scanpy对比学习

现在的单细胞分析,往往避免不了scanpy的使用,我们可以通过对比seurat来学习scanpy 今天的格式怎么都改不了。。。手机阅读有点费劲,,推荐电脑阅读。 单细胞数据分析概览 单细胞分析,总流程 python教程 seurat教程 se…

CSP-J 2023 T1 小苹果

文章目录 题目题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示 题目传送门题解思路总代码 提交结果尾声 题目 题目描述 小 Y 的桌子上放着 n n n 个苹果从左到右排成一列,编号为从 1 1 1 到 n n n。 小苞是小 Y 的好朋友,每天她都会从…

文心一言4.0 VS ChatGPT4.0 图片生成能力大比拼!

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,所以创建了“AI信息Gap”这个公众号,专注于分享AI全维度知识…

欢迎 Gemma: Google 最新推出开源大语言模型

今天,Google 发布了一系列最新的开放式大型语言模型 —— Gemma!Google 正在加强其对开源人工智能的支持,我们也非常有幸能够帮助全力支持这次发布,并与 Hugging Face 生态完美集成。 Gemma 提供两种规模的模型:7B 参数…

BUUCTF crypto做题记录(8)新手向

一、密码学心声 得到信息如下图 背景故事没什么信息,主要看曲谱。大概率不会让我们涉及与音乐有关的内容,题目中也提示说答案是一串字符串,所以我们可以猜测是将曲谱上的数字转化成字符。曲谱中文字提示是用ASCII码进行转换。没有数字8可能是…

PostMan使用自带js库base64编码、sha256摘要、环境变量的使用

目录 1、环境变量的使用2、base64编码、sha256摘要、以及脚本的使用3、脚本代码 在请求调试接口的过程中,因为要使用大量相同的参数,使用变量的方式能很大程度上减轻接口调用的工作量 版本说明:Postman for Windows,Version&#…

【初中生讲机器学习】11. 回归算法中常用的模型评价指标有哪些?here!

创建时间:2024-02-19 最后编辑时间:2024-02-23 作者:Geeker_LStar 你好呀~这里是 Geeker_LStar 的人工智能学习专栏,很高兴遇见你~ 我是 Geeker_LStar,一名初三学生,热爱计算机和数学,我们一起加…

【C++私房菜】面向对象中的多重继承以及菱形继承

文章目录 一、多重继承1、多重继承概念2、派生类构造函数和析构函数 二、菱形继承和虚继承2、虚继承后的构造函数和析构函数 三、has-a 与 is-a 一、多重继承 1、多重继承概念 **多重继承(multiple inheritance)**是指从多个直接基类中产生派生类的能力…

flink内存管理,设置思路,oom问题,一文全

flink内存管理 1 内存分配1.1 JVM 进程总内存(Total Process Memory)1.2 Flink 总内存(Total Flink Memory)1.3 JVM 堆外内存(JVM Off-Heap Memory)1.4 JVM 堆内存(JVM Heap Memory)…

高并发系统实战课个人总结(极客时间)

高并发系统实战课 场景 读多写少 我会以占比最高的“读多写少”系统带你入门,梳理和改造用户中心项目。这类系统的优化工作会聚焦于如何通过缓存分担数据库查询压力,所以我们的学习重点就是做好缓存,包括但不限于数据梳理、做数据缓存、加缓…

axios是如何实现的(源码解析)

1 axios的实例与请求流程 在阅读源码之前,先大概了解一下axios实例的属性和请求整体流程,带着这些概念,阅读源码可以轻松不少! 下图是axios实例属性的简图。 可以看到axios的实例上,其实主要就这三个东西&#xff1a…

CLion 2023:专注于C和C++编程的智能IDE mac/win版

JetBrains CLion 2023是一款专为C和C开发者设计的集成开发环境(IDE),它集成了许多先进的功能,旨在提高开发效率和生产力。 CLion 2023软件获取 CLion 2023的智能代码编辑器提供了丰富的代码补全和提示功能,使您能够更…

基于Java+小程序点餐系统设计与实现(源码+部署文档)

博主介绍: ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到 Java项目精品实…

FairyGUI × Cocos Creator 3.x 场景切换

前言 前文提要: FariyGUI Cocos Creator 入门 FairyGUI Cocos Creator 3.x 使用方式 个人demo:https://gitcode.net/qq_36286039/fgui_cocos_demo_dust 个人demo可能会更新其他代码,还请读者阅读本文内容,自行理解并实现。 官…

MySql-DQL-聚合函数

目录 聚合函数统计该企业员工数量count(字段)count(常量)count(*) 统计该企业最早入职的员工统计该企业最迟入职的员工统计该企业员工 ID 的平均值统计该企业员工的 ID 之和 聚合函数 之前我们做的查询都是…

uniapp_微信小程序自定义顶部导航栏和右侧胶囊对齐(不对齐来打我)

一、想要的效果 思路首先开启自定义导航栏&#xff0c;取消自带的导航栏&#xff0c;然后计算胶囊的高度和标题对齐 二、成品代码 1、首先再你需要居中的代码添加以下style <view class"header":style"{paddingTop:navBarTop px,height:navBarHeight px,…

Vue的个人笔记

Vue学习小tips ctrl s ----> 运行 alt b <scrip> 链接 <script src"https://cdn.jsdelivr.net/npm/vue2.7.16/dist/vue.js"></script> 插值表达式 指令

力扣hot100题解(python版7-9题)

7、接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组 [0,1,0,2,1,0,1,…

第2讲:C语言数据类型和变量

第2讲&#xff1a;C语言数据类型和变量 目录1.数据类型介绍1.1字符型1.2整型1.3浮点型1.4 布尔类型1.5 各种数据类型的长度1.5.1 sizeof 操作符1.5.2 数据类型长度1.5.3 sizeof 中表达式不计算 2.signed 和 unsigned3.数据类型的取值范围4. 变量4.1 变量的创建4.2 变量的分类 5…

vue2+element医院安全(不良)事件报告管理系统源代码

目录 安全不良事件类型 源码技术栈 医院安全&#xff08;不良&#xff09;事件报告管理系统采用无责的、自愿的填报不良事件方式&#xff0c;有效地减轻医护人员的思想压力&#xff0c;实现以事件为主要对象&#xff0c;可以自动、及时、实际地反应医院的安全、不良、近失事件…