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

·  阅读 223

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

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

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

Fatkun

Fatkun是一款内嵌到浏览器的工具;可以帮你方便地从任意网站上批量采集喜欢的图片并迅速完成筛选和保存 web.fatkun.cn/extension.h… ,支持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扩展还有 图片助手 chrome.google.com/webstore/de… ,右键提取图片。 image.png

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

imagecyborg

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

Python脚本下载

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

单个回答接口 www.zhihu.com/api/v4/answ… 可以看到content就是回答内容,图片地址也都在里面。

image.png

简单的代码如下:

import urllib
import requests
from pyquery import PyQuery as pq
import os
from hashlib import md5
from multiprocessing.pool import Pool
 
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)  ",
        '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'])  
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)

print('图片总数:'+str(len(imgs_url)))    
复制代码

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

image.png

如果想下载所有回答的图片可以使用接口 www.zhihu.com/api/v4/ques…

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

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

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

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

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

免费知识星球,每天更新

公众号 苏生不惑

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

分类:
后端
标签: