cnblogs_downloader module

class cnblogs_downloader.CnblogsDownloader(cnblogs_cookie, workdir, download_img=False)[source]

Bases: object

下载器类,日志均print到控制台

_FLAG_FILE_NAME = '.CnblogsDownloaderFlag.json'
_IMG_PATTERN = re.compile('(!\\[[^\\]]*?\\]\\()([^\\)]*/([^\\)]*?))(\\))|(<img[^>]*?src=")([^"]*/([^"]*?))("[^>]*?>)')

预先编译正则 called by CnblogsDownloader._download_replace_img()

此处正则中使用(?:)非捕获元无效

__init__(cnblogs_cookie, workdir, download_img=False)[source]

初始化下载器类

Parameters
  • cnblogs_cookie (str) – 博客园Cookie .Cnblogs.AspNetCore.Cookies 的值

  • workdir (str) – 工作目录,即下载目录

  • download_img (bool) – 是否离线随笔中引用的图片

_category_download_thread(category)[source]

每个分类一个线程去下载随笔内容,需要的话,还能下载图片

多线程共用一个工作目录,任何一个线程os.chdir都会改变整个程序的工作目录

Parameters

category (dict) – 分类的基本信息

static _download_replace_img(essay_title, essay_content, workdir)[source]

替换文章内容中的图片,包括 ![]()<img src="xx" style="height:450px"> 的格式

img标签中其他属性也会被保留,比如替换后为 <img src="./img/xx" style="height:450px">

最后根据图片链接下载图片

Return type

str

Returns

完成替换后的文章内容

download_to_subdir()[source]

开始下载

主函数,多线程下载随笔及图片,线程数为随笔的分类数

Return type

int

Returns

更新的随笔数量