shubin

代码如下:


from zhihu_oauth import ZhihuClient

from zhihu_oauth.exception import NeedCaptchaException
from docx import Document
from docx.shared import Inches
from w3lib.html import remove_tags
import urllib.request
from io import StringIO
import subprocess
import re
document = 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(\'898311543@qq.com\', \'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转码。具体的代码实现可以参考上面的代码。

 

分类:

技术点:

相关文章:

  • 2021-08-05
  • 2021-12-21
  • 2021-11-11
  • 2021-11-09
  • 2021-12-12
  • 2021-10-16
  • 2021-10-19
  • 2021-12-15
猜你喜欢
  • 2021-12-08
  • 2021-08-31
  • 2018-09-13
  • 2021-10-04
  • 2021-11-06
  • 2021-12-08
相关资源
相似解决方案