​​​​ 如何用Python批量下载知乎回答图片 | 苏生不惑的博客

如何用Python批量下载知乎回答图片

苏生不惑第172 篇原创文章,将本公众号设为星标,第一时间看最新文章。

这两天刷知乎看到腾讯的一个回答 有什么可爱的微信头像 ?https://www.zhihu.com/question/310335618/answer/602970433,分享了上百张QQ高清经典头像。
image.png

于是想着一次性下载下来(公众号后台回复 知乎 获取下载的QQ头像),下面分享几个批量下载图片工具。https://www.lanzoux.com/iKPVcgfdpji

Fatkun

Fatkun是一款内嵌到浏览器的工具;可以帮你方便地从任意网站上批量采集喜欢的图片并迅速完成筛选和保存 http://web.fatkun.cn/extension.html ,支持Chrome、360、QQ、2345、百度、UC、猎豹等所有chrome内核浏览器及Firefox浏览器。

这里下载的是Chrome扩展,安装Chrome扩展方法见之前文章 上不了谷歌如何安装 Chrome 扩展

image.png

先拉到网页底部,右键选择批量下载。
image.png
看到有238张图。
image.png

全选图片,点下载。
image.png
很快图片就下载好了,下载目录打开 chrome://downloads/ 可以看到。
image.png

也可以导出所有图片链接 ,格式改为 {LINK} 就是纯链接了,然后用idm这种软件批量下载。

image.png

类似的Chrome扩展还有 图片助手 https://chrome.google.com/webstore/detail/imageassistant-batch-imag/dbjbempljhcmhlfpfacalomonjpalpko?hl=zh-CN ,右键提取图片。
image.png

可以根据图片类型,打消过滤选择下载的图片。
image.png

imagecyborg

https://imagecyborg.com/ 这是个在线网站,输入知乎回答链接即可下载图片。
image.png
下载的图片在一个zip压缩包内,不过国外的网站有点慢。
image.png

Python脚本下载

知乎有接口可以获取回答内容,所以使用Python下载就很简单了。

单个回答接口 https://www.zhihu.com/api/v4/answers/602970433?include=is_normal,is_sticky,collapsed_by,suggest_edit,comment_count,collapsed_counts,reviewing_comments_count,can_comment,content,editable_content,voteup_count,reshipment_settings,comment_permission,mark_infos,created_time,updated_time,relationship.is_author,voting,is_thanked,is_nothelp,upvoted_followees;author.is_blocking,is_blocked,is_followed,voteup_count,message_thread_token,badge[?(type=best_answerer)].topics 可以看到content就是回答内容,图片地址也都在里面。

image.png

简单的代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import urllib
import requests
from pyquery import PyQuery as pq
import os
from hashlib import md5
from multiprocessing.pool import Pool
#python爬取知乎回答图片 https://zhuanlan.zhihu.com/p/43408400 https://www.zhihu.com/question/310335618/answer/602970433
url = 'https://www.zhihu.com/api/v4/answers/602970433?include=is_normal,is_sticky,collapsed_by,suggest_edit,comment_count,collapsed_counts,reviewing_comments_count,can_comment,content,editable_content,voteup_count,reshipment_settings,comment_permission,mark_infos,created_time,updated_time,relationship.is_author,voting,is_thanked,is_nothelp,upvoted_followees;author.is_blocking,is_blocked,is_followed,voteup_count,message_thread_token,badge[?(type=best_answerer)].topics'
headers = {
'Accept': "application/json, text/javascript, */*; q=0.01",
'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36",
'Referer': 'https://www.zhihu.com/api/v4/questions/602970433',
'x-requested-with': 'fetch',
}
res = requests.get(url,headers=headers,verify=False).json()
print(res['content'])
content = pq(res['content']) # content 内容为 xml 格式的网页,用pyquery解析
imgs_url = []
imgs = content('figure noscript img').items()
i = 0
for img_url in imgs:
i+=1
imgs_url.append(img_url.attr('src'))
tmp = requests.get(img_url.attr('src'),headers=headers,verify=False)
with open('pics/'+str(i)+'.jpg', 'wb') as f:
f.write(tmp.content)
#pip install wget
#filename = wget.download(url)
print('图片总数:'+str(len(imgs_url)))

执行脚本 Python zhihu.py ,很快就下载完了。

image.png

如果想下载所有回答的图片可以使用接口
https://www.zhihu.com/api/v4/questions/310335618/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%2Cvoteup_count%2Creshipment_settings%2Ccomment_permission%2Ccreated_time%2Cupdated_time%2Creview_info%2Crelevant_info%2Cquestion%2Cexcerpt%2Crelationship.is_authorized%2Cis_author%2Cvoting%2Cis_thanked%2Cis_nothelp%2Cis_labeled%2Cis_recognized%2Cpaid_info%3Bdata%5B%2A%5D.mark_infos%5B%2A%5D.url%3Bdata%5B%2A%5D.author.follower_count%2Cbadge%5B%2A%5D.topics&limit=5&offset=0&platform=desktop&sort_by=default

最后说几个知乎的使用技巧。

知乎复制的时候总会增加版权信息,比如 :

作者:xxx
链接:https://www.zhihu.com/question/310335618/answer/602970433
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

如果想去掉,打开控制台执行__z_z__.vu = () => ({Id: ()=>''}) ,再次复制就没有了,当然这样有点麻烦,可以自己写个油猴脚本来自动执行,可以参考我之前写的 如何更优雅地看电影/刷剧

有些回答禁止了复制功能,会提示禁止转载,安装simple allow copy 这个扩展 https://chrome.google.com/webstore/detail/simple-allow-copy/aefehdhdciieocakfobpaaolhipkcpgc 一键搞定,之前文章也介绍过 如何搞定某些网站不让复制文字
image.png

知乎小管家头像地址 https://pic4.zhimg.com/v2-85b5868ae1ee114c5818d29201aef708_xl.jpg
地址改为https://pic4.zhimg.com/v2-85b5868ae1ee114c5818d29201aef708_l.jpg 就是一张100*100的缩略图。
image.png

改为 https://pic4.zhimg.com/v2-85b5868ae1ee114c5818d29201aef708_r.jpg 就是原始大图,这个跟微博有点类似,之前也介绍过 如何更优雅地使用微博
image.png

更多知乎技巧见之前文章 那些你可能不知道的知乎奇技淫巧

大家的点赞和在看转发对我非常重要,如果文章对你有帮助还请支持下, 感谢各位!

公众号后台回复关键词 用途
微信 获取你的微信好友头像拼图及查看微信撤回消息
b站 获取下载b站视频工具及找回被删b站视频方法
视频 获取下载腾讯,优酷,爱奇艺,微博视频工具及去除logo脚本
百度网盘 获取加速下载网盘文件方法及查找电影电视剧网站
朋友圈 获取发空白朋友圈方法和九宫格图片
微博 获取备份微博工具及分析微博账号数据
音乐 获取下载音乐工具及在线听歌网站
油猴 获取油猴脚本
谷歌 获取安装Chrome扩展方法
公众号 一键下载公众号所有文章
抖音 一键下载无水印抖音视频

免费知识星球,每天更新

公众号 苏生不惑

扫描二维码关注或搜索微信susheng_buhuo