想必知乎这个网站大家都很熟悉吧,每天上午可能都会摸摸鱼来看看热榜上又有哪些热点。但是要是明目张胆的看网站时突然发现背后站着一个领导,那时可能就会很尴尬了,哈哈!

今天我就教大家如何快速而又优雅的获取知乎热榜上的信息,只需要30行代码即可完成。话不多说,咱们直接开始!

首先导入我们需要的Python库以及定义我们的headers,注意这里headers里面的cookie要替换为自己网站上的cookie值哦!

import requests
from bs4 import BeautifulSoup
import json
import reheaders = {'X-Requested-With': 'XMLHttpRequest','User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36','cookie': ''} #cookie值替换为自己网站上的cookie值

之后来获取关于知乎热榜上的所有问题链接:

url = 'https://www.zhihu.com/hot'
res = requests.get(url, headers=headers)
soup = BeautifulSoup(res.text, 'html.parser')
all_a = soup.select('div.HotItem-content a')

最后对每个问题链接进行请求,并获取该问题下的所有回答:

for a in all_a:link = a['href']print(link + a['title'])question_id = link.replace('https://www.zhihu.com/question/', '')res2 = requests.get(link, headers=headers)soup2 = BeautifulSoup(res2.text, 'html.parser')counts_content = soup2.select('h4.List-headerText')[0].get_text()counts_re = re.search('\d+\.?\d*', counts_content)counts = int(counts_re.group())print('共有{}个回答'.format(counts))for i in range(0, counts, 20):href = 'https://www.zhihu.com/api/v4/questions/{}/answers?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%2Crelationship.is_authorized%2Cis_author%2Cvoting%2Cis_thanked%2Cis_nothelp%2Cis_recognized%3Bdata%5B%2A%5D.mark_infos%5B%2A%5D.url%3Bdata%5B%2A%5D.author.follower_count%2Cbadge%5B%2A%5D.topics%3Bdata%5B%2A%5D.settings.table_of_content.enabled&limit=20&offset={}&platform=desktop&sort_by=default'.format(question_id, str(i))print(href)res3 = requests.get(href, headers=headers)datas = json.loads(res3.text).get('data')for data in datas:content = data.get('content')soup = BeautifulSoup(content, 'html.parser')print(soup.text)

关于知乎热榜的抓取就完成啦,抓取结果大致如下,数量很多,这里只展示前面一部分:

怎么样,是不是还是挺简单的!当然如果你还想获取其它信息的话也可以针对程序进行修改来获取你想要的信息,我们要学会举一反三。

完整程序如下:

import requests
from bs4 import BeautifulSoup
import json
import reheaders = {'X-Requested-With': 'XMLHttpRequest','User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36','cookie': ''} #cookie值替换为自己网站上的cookie值
url = 'https://www.zhihu.com/hot'
res = requests.get(url, headers=headers)
soup = BeautifulSoup(res.text, 'html.parser')
all_a = soup.select('div.HotItem-content a')
for a in all_a:link = a['href']print(link + a['title'])question_id = link.replace('https://www.zhihu.com/question/', '')res2 = requests.get(link, headers=headers)soup2 = BeautifulSoup(res2.text, 'html.parser')counts_content = soup2.select('h4.List-headerText')[0].get_text()counts_re = re.search('\d+\.?\d*', counts_content)counts = int(counts_re.group())print('共有{}个回答'.format(counts))for i in range(0, counts, 20):href = 'https://www.zhihu.com/api/v4/questions/{}/answers?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%2Crelationship.is_authorized%2Cis_author%2Cvoting%2Cis_thanked%2Cis_nothelp%2Cis_recognized%3Bdata%5B%2A%5D.mark_infos%5B%2A%5D.url%3Bdata%5B%2A%5D.author.follower_count%2Cbadge%5B%2A%5D.topics%3Bdata%5B%2A%5D.settings.table_of_content.enabled&limit=20&offset={}&platform=desktop&sort_by=default'.format(question_id, str(i))print(href)res3 = requests.get(href, headers=headers)datas = json.loads(res3.text).get('data')for data in datas:content = data.get('content')soup = BeautifulSoup(content, 'html.parser')print(soup.text)

30行代码完成对知乎热榜的抓取!相关推荐

  1. 40行代码教你利用Python网络爬虫批量抓取小视频

    1. 前言 还在为在线看小视频缓存慢发愁吗?还在为想重新回味优秀作品但找不到资源而忧虑吗?莫要慌,让python来帮你解决,40行代码教你爬遍小视频网站,先批量下载后仔细观看,岂不美哉! 2. 整理思 ...

  2. python爬取小视频-40行代码教你利用Python网络爬虫批量抓取小视频

    /1 前言/ 还在为在线看小视频缓存慢发愁吗?还在为想重新回味优秀作品但找不到资源而忧虑吗?莫要慌,让python来帮你解决,40行代码教你爬遍小视频网站,先批量下载后仔细观看,岂不美哉! /2 整理 ...

  3. Python程序员30行代码素描表白!网友:花里胡哨

    总有人说程序员不够浪漫!其实我们只是没时间而已,等我们有时间了,还有普通人什么事儿?最近就有一个小伙伴上热搜了! 原来他用Python给可爱的女朋友画了一幅素描!不到30行代码,一起来学学给她一个惊喜 ...

  4. 代码补全快餐教程(1) - 30行代码见证奇迹

    代码补全快餐教程(1) - 30行代码见证奇迹 下面是我用30多行代码,包含了很多空行和注释的代码写成的代码补全模型.我们先看看效果吧. 补全效果案例 先来看个比较普通的(Python, Keras) ...

  5. 30 行代码实现蚂蚁森林自动收能量(附送源码)

    点击上方 IT牧场 ,选择 置顶或者星标技术干货每日送达! blog.csdn.net/article/details/113734855 推荐:https://www.xttblog.com/?p= ...

  6. 那就别担心了(DFS优化)30行代码简单易懂

    下图转自"英式没品笑话百科"的新浪微博 -- 所以无论有没有遇到难题,其实都不用担心. 博主将这种逻辑推演称为"逻辑自洽",即从某个命题出发的所有推理路径都会将 ...

  7. 30行代码,带你分分钟创建神经网络!(附工具教程)

    来源:大数据文摘 作者:Per Haiald Borgen 本文长度为1612字,建议阅读3分钟 本文为你介绍如何使用Synaptic.js创建和训练神经网络. 本文含大量代码,如需原文请从文末来源链 ...

  8. vb.net读取excel并写入dgv_读取PDF中的表格写入EXCEL?30行代码搞定

    办公自动化系列+1 现在,各类数据分析的书籍,都可以在网上找到PDF版本: 同时,百度文库.各类数据统计文库.行业研究等众多论文报告,是通过PDF的形式去展示输出的: 但是,令人都头疼的是,各类数据分 ...

  9. thymealf如何实现传单个变量给html_梦回2013,看尤大vue的第一行代码,如何用30行代码实现vue(超简洁,适合初学者)...

    非非非标题党,干货预警!!! 介绍 大家好,我是清池交友 app 开发日记,记录清池交友 app 开发中学习过程和踩坑日记,伪全栈[1] 技术栈:前端 js,vue,uniapp,后端 java 尤大 ...

  10. 30 行代码实现蚂蚁森林自动“偷”能量

    作者 | xindoo 来源 | CSDN 博客,已获作者授权 虽然我支付宝加了好多好友,平时有很多能量可以"偷",但由于太懒,至今一棵树都没种成,所以心心念念把偷能量这事自动化. ...

最新文章

  1. SSH没有password安全日志
  2. 采用NAND Flash设计存储设备的挑战在哪里?
  3. 腾讯爬虫python_Python爬虫,爬取腾讯漫画实战
  4. 俞敏洪:如果创业者缺乏这8种能力,失败可能性很大
  5. 解题报告——例题5-8 Unix is 命令(UVa 400)——26行代码解决
  6. 计算机技术博客博客知乎,我的技术博客的选择:CSDN、博客园、简书、知乎专栏仍是Github Page?...
  7. mysql查询三个月内的_如何在三个月内自学攻克雅思6.5分?
  8. 无盘服务器性能测试,无盘系统性能测试及结语
  9. JZOJ 5914. 盟主的忧虑
  10. centos7 vsftpd 虚拟用户 pam模块认证
  11. [OfficeExcel] OfficeExcel2010 第18讲 Lookup--浅谈数组
  12. 怎么解决微信屏蔽app下载链接
  13. python通过pypiwin32操作PPT
  14. cython 安装升级_浅尝Kivy
  15. 声纹识别(说话人识别)技术
  16. vue3 中使用antd UI组件
  17. 数字电路之Verilog红绿灯设计
  18. intrins.h文件解读
  19. JavaScript面向对象(上)
  20. 【IoT】 产品设计:BRD、MRD、PRD详解(一)

热门文章

  1. 记一篇IT培训日记001-这是开篇
  2. 海外市场运营是做什么的
  3. c语言 试题 中荷,考试大纲-中荷生物医学与信息工程学院-东北大学.DOC
  4. Java简单选择排序
  5. ThinkPHP搭建手机版网站
  6. Android UI组件学习——带预览的图片浏览器
  7. Python爬虫之爬取豆瓣电影(二)
  8. Python基础之可变数据类型和不可变数据类型
  9. dbf文件意外删除_如何恢复意外删除的照片,图片或文件
  10. 对我影响很大的博客(持久更新)