【2023知乎爬虫】知友怎么看待《罗刹海市》?爬了上千条知乎回答!

这篇具有很好参考价值的文章主要介绍了【2023知乎爬虫】知友怎么看待《罗刹海市》?爬了上千条知乎回答!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录
  • 一、爬取目标
  • 二、展示爬取结果
  • 三、讲解代码
    • 3.1 分析页面
    • 3.2 开发爬虫
  • 四、同步视频
  • 五、获取完整源码

您好,我是@马哥python说,一枚10年程序猿。

一、爬取目标

之前我分享过一篇知乎评论的爬虫教程,但是学习群中的小伙伴强烈要求爬取知乎回答,所以本次分享知乎回答的爬虫。

二、展示爬取结果

老规矩,先展示结果。

最近《罗刹海市》这首歌比较火,就爬这个问题下的回答吧:如何评价刀郎的新歌《罗刹海市》?
【2023知乎爬虫】知友怎么看待《罗刹海市》?爬了上千条知乎回答!

爬取了前200多页,每页5条数据,共1000多条回答。(程序设置的自动判断结束页,我是手动break的)
共爬到13个字段,包含:

问题id,页码,答主昵称,答主性别,答主粉丝数,答主主页,答主签名,回答id,回答时间,评论数,点赞数,喜欢数,回答内容

三、讲解代码

3.1 分析页面

我是通过知乎的ajax接口爬的。打开一个知乎问题,Chrome浏览器按F12进入开发者模式之后,多往下翻几页回答,就会找到目标请求地址,如下:
【2023知乎爬虫】知友怎么看待《罗刹海市》?爬了上千条知乎回答!

每翻一次页,就会出现一个请求,请求中含5条回答数据。

3.2 开发爬虫

首先,导入需要用到的库:

import requests
import time
import pandas as pd
import os
import re
import random

定义一个请求头:

# 请求头
headers = {
    'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36',
}

这里,我仅设置了user-agent足矣。(如果数据量仍未满足且遇到反爬,请尝试增加cookie等其他请求头解决)

定义请求地址(含指定问题id):

# 请求地址
    url = 'https://www.zhihu.com/api/v4/questions/{}/feeds?include=data%5B%2A%5D.is_normal%2Cadmin_closed_comment%2Creward_info%2Cis_collapsed%2Cannotation_action%2Cannotation_detail%2Ccollapse_reason%2Cis_sticky%2Ccollapsed_by%2Csuggest_edit%2Ccomment_count%2Ccan_comment%2Ccontent%2Ceditable_content%2Cattachment%2Cvoteup_count%2Creshipment_settings%2Ccomment_permission%2Ccreated_time%2Cupdated_time%2Creview_info%2Crelevant_info%2Cquestion%2Cexcerpt%2Cis_labeled%2Cpaid_info%2Cpaid_info_content%2Creaction_instruction%2Crelationship.is_authorized%2Cis_author%2Cvoting%2Cis_thanked%2Cis_nothelp%3Bdata%5B%2A%5D.mark_infos%5B%2A%5D.url%3Bdata%5B%2A%5D.author.follower_count%2Cvip_info%2Cbadge%5B%2A%5D.topics%3Bdata%5B%2A%5D.settings.table_of_content.enabled&limit=5&offset=0&order=default&platform=desktop'.format(
        v_question_id)

发送请求,并接收数据:

# 发送请求
r = requests.get(url, headers=headers)
# 接收返回数据
j_data = r.json()

定义一些空列表用于存放解析后数据:

author_name_list = []  # 答主昵称
author_gender_list = []  # 答主性别
follower_count_list = []  # 答主粉丝数
author_url_list = []  # 答主主页
headline_list = []  # 答主签名
answer_id_list = []  # 回答id
answer_time_list = []  # 回答时间
answer_content_list = []  # 回答内容
comment_count_list = []  # 评论数
voteup_count_list = []  # 点赞数
thanks_count_list = []  # 喜欢数

以"回答内容"字段为例:

for answer in answer_list:
    # 回答内容
    try:
        answer_content = answer['target']['content']
        answer_content = clean_content(answer_content)
    except:
        answer_content = ''
    answer_content_list.append(answer_content)

其他字段同理,不再赘述。

把数据保存为Dataframe并进一步保存到csv文件:

# 数据保存为Dataframe格式
df = pd.DataFrame(
    {
        '问题id': v_question_id,
        '页码': page,
        '答主昵称': author_name_list,
        '答主性别': author_gender_list,
        '答主粉丝数': follower_count_list,
        '答主主页': author_url_list,
        '答主签名': headline_list,
        '回答id': answer_id_list,
        '回答时间': answer_time_list,
        '评论数': comment_count_list,
        '点赞数': voteup_count_list,
        '喜欢数': thanks_count_list,
        '回答内容': answer_content_list,
    }
)
# 保存到csv文件
df.to_csv(v_result_file, mode='a+', index=False, header=header, encoding='utf_8_sig')

保存到csv时加上encoding='utf_8_sig'参数,防止产生乱码问题。

至此,核心代码逻辑讲解完毕。完整代码还包括:转换时间格式、转换性别、正则表达式清洗回答内容、循环内判断结束页等功能,详见文末获取。

代码中,question_id换成任意知乎问题id,即可爬取该问题的对应回答。

四、同步视频

代码演示视频:https://www.bilibili.com/video/BV1BX4y1772v

五、获取完整源码

附完整python源码:【2023知乎爬虫】知友怎么看待《罗刹海市》?爬了上千条知乎回答!


我是@马哥python说 ,一名10年程序猿,持续分享python干货中!文章来源地址https://www.toymoban.com/news/detail-623621.html

到了这里,关于【2023知乎爬虫】知友怎么看待《罗刹海市》?爬了上千条知乎回答!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【爬虫案例】用Python爬取知乎热榜数据!

    目录 一、爬取目标 二、编写爬虫代码 三、同步讲解视频 3.1 代码演示视频 3.2 详细讲解视频 四、获取完整源码 您好,我是@马哥python说,一名10年程序猿。 本次爬取的目标是:知乎热榜 共爬取到6个字段,包含: 热榜排名, 热榜标题, 热榜链接, 热度值, 回答数, 热榜描述。 用

    2024年02月15日
    浏览(49)
  • 2023上海市“星光计划”职业院校技能大赛 网络安全竞赛试题任务书

    2023上海市“星光计划”职业院校技能大赛 网络安全竞赛试题任务书 A模块基础设施设置/安全加固(200分) 一、项目和任务描述: 假定你是某企业的网络安全工程师,对于企业的服务器系统,根据任务要求确保各服务正常运行,并通过综合运用登录和密码策略、流量完整性保

    2023年04月19日
    浏览(52)
  • 上海市计算机学会竞赛平台(iai.sh.cn)2023一月月赛(丙组)解题报告

    内存限制: 256 Mb时间限制: 1000 ms。 小爱正在完成一个物理实验,为期n天,其中第i天,小爱会记录 a i a_i a i ​ 条实验数据在实验日志中。已知小爱的实验日志每一页最多纪录m条数据,每天做完实验后他都会将日志合上,第二天,他便从第一页开始依次翻页,直到找到第一个

    2024年02月16日
    浏览(49)
  • 怎么看待ChatGPT封号这件事呢?

    最近的ChatGPT大量封号,刷爆了全网,我的两个个人账号被封禁了,不知道大家最近有没有遇到相关的报错信息,要么就是检查你当前的浏览器配置,最后来一个access denied,要么直接就给你来一个当前的国家不支持。今天我们就来分析一下背后的骚操作。 1、违反服务条款 如

    2024年02月01日
    浏览(45)
  • (待完善)2023-selenium 实现知乎自动登录(第三方登录/使用cookie自动登录)+指定用户的信息相关搜集(2023.3)

    叠甲:本文写作目的仅为本人学习参考、实现功能为课程实验要求、本文写作过程处于作者对于爬虫技术学习的过程,部分代码编写时水平还不够,出现的错误比较多、部分变量名字又臭又长,水平有限,请各位给我的作业汇报留条活路[拜托],请不要卷我,如果发现有什么

    2023年04月10日
    浏览(48)
  • Python爬虫爬取知乎文章内容(解决最新js反爬2021.9 x-zse-96 2.0版本加密破解分析)...

    有个需求爬取知乎文章,正好记录下爬取过程以及出现问题并解决方法 我是在没有登录的情况下爬取文章的 本文仅供研究与学习使用 知乎现今的 x-zse 参数的加密方法已升级成了:x-zse-96 2.0版本。 来看这篇帖子的应该都知道,这个参数动态唯一,没有就拿不到api数据。 查阅

    2023年04月08日
    浏览(55)
  • 如何看待现在的 IT 行业,秋招来临,新人们又该怎么应对?

    最近接触到很多即将参加工作的小伙伴咨询笔者,想看看目前IT行情怎么样。好规划自己未来的发展。笔者亦是知无不言.想的多了,感触也就多了,干脆以一篇博文来阐述下自己的理解。 其实对于大多数IT行业从业者或即将从业的学生,不管有心无心,多少能听到目前关于

    2024年02月16日
    浏览(38)
  • 当年知乎上那个被劝买比特币的学生后来怎么样了

    从2011年到2024年,比特币从3美元一度蹿升至最高点时的7.4万美元,如果那个大三学生将6000元全部买了比特币,此时早已是千万身家。 区块链欧意平台:by3.top 区块链bi安平台:by4.top 错过比特币的知乎女孩称很后悔当初没有听长铗的建议买比特币。在接受专访时,长铗也表示

    2024年04月14日
    浏览(33)
  • 怎么看待格力董事长董明珠说:不想招只关心工资待遇的人?

    董明珠是格力电器的董事长,她一向以直言不讳而闻名。最近,她在接受采访时再次引起了人们的关注。 董明珠表示,她不喜欢招聘那些只关心工资待遇的人。她认为,年轻人应该知道自己的能力和潜力,而不仅仅是对金钱的追求。 她说:“年轻人要有自知之明,要明白自

    2024年02月11日
    浏览(36)
  • 【2023,学点儿新Java-14】携程面试题:如何看待Java是一门半编译半解释型的语言?| 咨询互联网行业 资深前辈的一些问题 | 附:为什么说ChatGPT的核心算法是...?| GPT-3.5

    前情回顾: 【2023,学点儿新Java-13】阶段练习之Java面试企业真题(阿里巴巴拼多多 等) | 常用的Java命令行操作都有哪些 | 如何解决Java的内存泄漏和内存溢出问题? 【2023,学点儿新Java-12】小结:阶段性复习 | Java学习书籍推荐(小白该读哪类Java书籍?有一定基础后,再去读

    2024年02月09日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包