下载知乎指定问题的答案并保存图片

代码如下:


from zhihu_oauth import ZhihuClient

from zhihu_oauth.exception import NeedCaptchaExceptionfrom docx import Documentfrom docx.shared import Inchesfrom w3lib.html import remove_tagsimport urllib.requestfrom io import StringIOimport subprocessimport redocument = Document()client = ZhihuClient()

try:
    client.login(‘username‘, ‘pass‘)
except NeedCaptchaException:
    # 保存验证码并提示输入,重新登录
    with open(‘a.gif‘, ‘wb‘) as f:
        f.write(client.get_captcha())
    captcha = input(‘please input captcha:‘)
    client.login(‘[email protected]‘, ‘1818039565‘, captcha)

p = re.compile(‘<img.*>‘)
num = input(‘请输入问题序号:‘)
question = client.question(int(num))
i = 0;
file = open(question.title+‘.html‘,‘w‘)
file.write(‘<html><head></head><body>‘)
# document.add_heading(question.title, 0)
file.write(‘<h1>‘+question.title+‘</h1>‘)
for answer in question.answers:
#    print(question.answers[0].content.replace(‘<br>‘,‘\n‘))
#    print(question.answers[0].voteup_count)
    print(answer.author.name)
    # document.add_paragraph("回答者:"+answer.author.name+‘\t‘+‘赞数:‘+str(answer.voteup_count), style=‘IntenseQuote‘)
    # document.add_paragraph(remove_tags(answer.content, keep=(‘img‘,)))
    # document.add_page_break()
    file.write(‘<br><br>‘+"回答者:"+answer.author.name+‘&nbsp;&nbsp;‘+‘赞数:‘+str(answer.voteup_count))
    file.write(‘<p>‘+answer.content+‘</p>‘)
    i=i+1
    if(i>50):
        break
#document.save(str(question.title)+‘.docx‘)
file.write(‘</body></html>‘)
file.close()
subprocess.call([‘pandoc‘,question.title+‘.html‘,‘-o‘,question.title+‘.docx‘])
subprocess.call([‘rm‘,‘-rf‘,question.title+‘.html‘])

参考资料:https://github.com/7sDream/zhihu-oauth

这段代码主要利用zhihu-oauth实现对知乎内容的获取,这个项目很好的对知乎的API进行了封装并且非常容易的实现知乎的各种操作。

在Ubuntu系统下通过

pip install -U zhihu_oauth

可以安装zhihu_oauth模块。为以后下载做好准备。

在下载知乎文章中主要遇到的问题是,不好处理图片。

当直接将content保存到docx中的时候,会直接将<img>标签保存到docx中,不好处理。后来在issue中找到了比较好的解决方案。

一种解决方案是直接保存成html然后用pandoc转码。具体的代码实现可以参考上面的代码。

时间: 2024-09-29 08:00:04

下载知乎指定问题的答案并保存图片的相关文章

(转)5种在家免费下载知网文献的方法

作者:苏伦 链接:https://zhuanlan.zhihu.com/p/25092153 来源:知乎 作为一名大四学生,春节长假一过,毕业论文便提上了日程.无论是刚刚开始构思还是正着手写作,都离不开广泛阅读文献.但是这个时间点的大四学生大多因为各种缘由不在学校,使用中国知网等文献数据库有诸多不便,所以我总结了以下5种免费下载中国知网文献的方法,并按照易用性进行了排序,希望能够帮到大家.其实每一种方法都很好用,只是多留几种,有备无患. 部分方法参考自在家里如何免费使用中国知网? - 大学生 -

不借助autolt实现下载文件到指定目录

今天尝试了下不用借助autolt完成下载文件到指定目录, 好处:在于集成回归,远程机可以绕过执行autolt程序权限问题,导致autolt程序无法调用,不能完成脚本的回归 Firefox浏览器已经成功,代码如下: package com.dwkj.test.util; import java.io.File; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.Ja

MySQL自动备份和下载备份到指定位置

经常手动获取服务器数据库太麻烦,而且容易影响到服务器配置,要是让数据库自动备份并定时下载到客户端指定位置就好了! win sever2012+mysql 8 命令行.bat脚本 在wiodows计划程序创建计划任务: 需要注意的是,创建计划任务时,配置要选择当前平台,否则任务无法运行: 自动下载的脚本需要配置在客户端,用ftp实现(服务端发布ftp网站同理): 这是ftp.txt文本: 然后配置一个.bat脚本,创建计划任务定时执行: 每天会定时备份数据库下来,效果: ? 原文地址:https:

用svn下载github中指定目录的文件

1.先用命令看看github的分支 svn ls https://github.com/BlueRiverInteractive/robovm-ios-bindings 输出: branches/ trunk/ 或者使用UI操作,浏览目录(一般在库下面都有两个目录:branches,trunk) 打开trunk目录下面就可以看到这个库下面的目录和文件了 然后: svn ls https://github.com/BlueRiverInteractive/robovm-ios-bindings/t

下载图片信息和指定的图片

以vue.js为例,列表中显示了图片信息.现在我需要把这张图片下载的本地. 1.首先,获取连接地址,格式是字符串.讲地址字符内容转变为blob地址. 2.创建一个隐藏的a标签,赋予href链接,点击a标签实现下载. 具体看代码如下: download:function(item){ var url = item.url; fetch(url).then(res => res.blob().then(blob => { // 创建隐藏的可下载链接 var a = document.createE

HTML5实现下载文件且指定下载文件名

<a href="/files/adlafjlxjewfasd89asd8f.pdf" download="预算表.pdf">下载支出费用表</a>

Http 下载文件,指定下载位置

HTTP协议简介 下载文件是电脑与WEB服务器交互的过程,它们交互的"语言"的专业名称是协议.传送文件的协议有多种,最常用的是HTTP(超文本传输协议)和FTP(文件传送协议),我采用的是HTTP. HTTP协议最基本的命令只有三条:Get.Post和Head.Get从WEB服务器请求一个特定的对象,比如HTML页面或者一个文件,WEB 服务器通过一个Socket连接发送此对象作为响应:Head命令使服务器给出此对象的基本描述,比如对象的类型.大小和更新时间.Post命令用于向 WEB

ubuntu16.04下载deb安装指定版本eos

前提:ubuntu 16.04 时间:2019年11月18日 下载deb wget https://github.com/EOSIO/eos/releases/download/v1.8.6/eosio_1.8.6-1-ubuntu-16.04_amd64.deb xuperxuperunion:eos# wget https://github.com/EOSIO/eos/releases/download/v1.8.6/eosio_1.8.6-1-ubuntu-16.04_amd64.deb

Mac文件上传下载到服务器指定命令

下载文件夹 scp -r  远程登录服务器用户名@远程服务器ip地址:/下载文件夹的目录     『空格』    本地目录 下载文件 scp   远程登录服务器用户名@远程服务器ip地址:/下载文件的目录          『空格』    本地目录 上传文件『到文件夹下』 1 . 打开终端, 进入上传文件的目录. 2. 输入下面的命令 scp -r  远程登录服务器用户名@远程服务器ip地址:/文件上传的目录地址 原文地址:https://www.cnblogs.com/niunafei/p/1