CSDNExporter
介绍
CSDN 博客导出工具, 用于将 CSDN 博客导出为 Markdown / PDF 格式. 比较赞的地方在于, 它 不仅支持一篇博文的导出, 还支持将某个类目下的博文批量导出, 以及将导出的多篇博文汇总为 一篇, 以便用于全局搜索, 具体效果可以查看 .
运行脚本
- Linux系统运行 启动脚本为
./run.sh
, 使用chmod +x run.sh
增加其可执行权限;(并没有测试) - Windows系统启动 启动脚本为
run.bat
, 双击打开或者在cmd中运行run.bat
。
修改的地方
1、将下载的博客的图片分开保存在title…assets文件中,博客中有图片的时候才会创建图片目录,只会创建一次
utils.py 增加了一个参数title
def __init__(self, html, title, is_win=False):
self.html = html
self.soup = BeautifulSoup(html, 'html.parser')
self.outputs = []
self.fig_dir = f'./figures/{title}'+'.assets'
self.pre = False
self.equ_inline = False
self.is_win = is_win
self.recursive(self.soup)
recursive(self, soup):
def recursive(self, soup):
…………
elif tag == 'img':
if not exists(self.fig_dir): # 博客中有图片的时候才会创建图片目录,只会创建一次
os.makedirs(self.fig_dir)
…………
2、输入用户名就可以直接找到的用户的博客专栏,拿到所有专栏下面的文章
run.bat 先将所有的categories保存在userName.txt中
if %download_category% == "true" (
echo "Obtain blog directory link: save in userName.txt........"
python -u link.py %userName%
)
再读取userName.txt文件的链接
for /f "tokens=* delims=" %%a in (m0_67623521.txt) do (
echo %%a
if %download_category% == "true" (
echo "Download a category"
python -u main.py ^
--category_url %%a ^
--start_page %start_page% ^
--page_num %page_num% ^
--markdown_dir %markdown_dir% ^
--pdf_dir %pdf_dir% ^
--combine_together ^
--to_pdf ^
--is_win 1
@REM --with_title ^
@REM --rm_cache
)
)
link.py
user = sys.argv[1] # 拿到命令行下的用户名参数
将连接写入文件
for li in lis:
# print("####")
url = li.find("a").attrs['href']
title = li.find("span").attrs['title']
titles.append(title)
infos[title] = {"url":url}
# print("[+]"+title+url)
with open(user+'.txt','a+') as f: #设置文件对象
f.write(url)
f.write('\n')
补充
另外要说明的是:
- 安装必要的 Python 库, 如
httpx
,requests
,BeautifulSoup
,bs4
; - 为了解析图片链接, 需要安装 aria2, 并保证能在命令行启动;
- 为了转换为 PDF, 需要安装 Pandoc,(博主该功能我并没有测试)。
- 该博客导出工具再我的需求下就是拿到md文件,现在的功能我还是比较满意
对于安装aria2的问题
我参考了以下博文:
如果想要下载配置好的aria2,可以在CSDN私聊我的博客 。