知乎链接转markdown/pdf方法
在GitHub上看到了一个有意思的知乎内容转markdown到本地的方案([原链接在此,希望大家多都给原作者star,push他更新知乎反爬机制]
试用网站链接
作者还提供了一个体验版的网站(网站链接),网站长这样,提供你自己的知乎cookie和想要下载的链接即可下载(专栏还可以批量下载属于小惊喜啦)
cookie获取方法
关于cookie获取的方法,GitHub链接上也有详细介绍(cookie指路)
相关内容贴一下:
- 步骤 1: 进入知乎首页并登录
进入知乎首页,登录账号后按下 F12,点击 Network 选项卡;
- 步骤 2: 获取 Cookies
刷新知乎首页,在 Network 中随意点击一个 Fetch 项,在右边的 Headers 中找到 Cookie,这段代码就是知乎 Cookie。需要注意的是按下f12之后刷新,这样才能看到很多fetch。
本地使用
对于这个下载功能还是比较需要的,知乎查看毕竟不方便(尤其是组会ppt偷懒不想敲latex的时候,部分论文在知乎上有大佬进行解读,很多东西能直接复制自然最方便)
本地使用方法:
-
下载GitHub上的项目到本地,然后解压打开
-
打开main.py文件,拉到最后面然后替换cookie和url,分别是你自己的cookie和文章链接(是不是专栏无所谓)
- 运行然后把没有安装的库一个个安装上,然后就会发现文件夹下多了一个下载好的.md文件
但是我发现它对于公式的适配有一点点小问题,主要出在某些公式最后的一个" \ "上面,于是手动进行了修改。
分析一下不难发现,有小部分公式有问题的地方,其实是公式最后有个\没有去掉,这种情况下很简单,只需要对于公式替换部分的代码进行字符串截取,最后一个字符去掉就行。除此之外在标题的部分有一个#导致的问题,这个更直接,用replace(“#”,“#”,-1)就好
以这个知乎链接为例,直接爬取的结果就是公式最后都多出一个\导致无法正常显示在markdown中,渲染出的pdf很难看。
- 修改1
于是我对于大约226行的位置进行了如下修改:
# 将特殊标记替换为 LaTeX 数学公式
for formula in math_formulas:
if hexo_uploader:
content = content.replace(
"@@MATH@@", "$" + "{% raw %}" + formula + "{% endraw %}" + "$", 1)
else:
# 如果公式中包含 $ 则不再添加 $ 符号
if formula.find('$') != -1:
# 如果公式最后含有\,则将其去掉
if formula[-1]=='$' and formula[-2]=="\\":
content = content.replace("@@MATH@@", f"{formula[:-1]}"+"$", 1)
# print(1)
else:
content = content.replace("@@MATH@@", f"{formula}", 1)
# print(2)
else:
if formula[-1]=="\\":
content = content.replace("@@MATH@@", f"${formula[:-1]}$", 1)
else:
content = content.replace("@@MATH@@", f"${formula}$", 1)
- 修改2
然后我在content转换为markdown的后面(大约222行)添加了一行来将“#”换成“#”
# 直接修改 \# 为 #
content=content.replace("\#","#",-1) # -1表示替换所有
写下这篇博客主要是为了自己记录一下这个方法,顺便推荐这个很有用的项目