求人不如求己,自己动手写一个CSDN博客备份小工具?

2019-07-19  本文已影响0人  SnailMann

求人不如求己,自己动手写一个CSDN博客备份小工具?


前提概要


背景


cabtool

什么是CAB-Tool?这是什么玩意。其实就是csdn-article-backup-tool的缩写。为什么要缩写,本质就是装的一手好逼(狗头)

在这里插入图片描述

所以有需要的童鞋,可以去GayHub上顺手牵羊,支持小白式exe文件启动哈


实践基础

因为博客备份工具还挺简单的,所以涉及内容并不复杂,主要是CSDN本身也没有防爬机制,所以只要了解简单爬虫知识的同学,都可以自己动手做一份,实践一下。

爬虫实践


(一)分析如何爬取博客的markdown内容

以上,我们就可以得到单篇的文章的markdown内容啦!!Wow ! 剩下的就要做如何把所有文章的markdown内容都获取到 。同时这里提醒一下。因为markdown编辑器是需要用户登录才能访问的,所以必须要带有正确的cookies,否则是会提醒你权限不足,要求登录的奥,既Cookies的获取也是十分重要的一步


(二)分析如何批量爬取博客的markdown

从上面,我们知道了如何爬取单篇文章的markdown ,很简单,只要通过url + 文章id就可以了。那我们如何批量爬取呢?也很简单。 如果我们一开始就知道自己所有文章的id集合, 然后遍历请求不就可以了嘛。

没错,但是我们怎么拿到所有文章的ID集合呢?这就是我们要解决的问题

总之通过以上的一顿操作,我们就可以通过py爬虫,抓取到所有页的文章ID,汇总成一个集合。然后遍历该集合,我们就可以获得所有文章的markdown内容啦!!!


(三)如何模拟登录,获得cookies

为什么要模拟登录,拿到cookies呢? 因为从markdown编辑器中获取markdown文本内容,需要用户登录,所以我们请求markdown内容的请求必须带上cookies,否者是会被提示无权限访问,需要用户登录的。

在这里插入图片描述
def dologin(self, username='', password=''):
        """
        Simulated login CSDN account
        :param username:
        :param password:
        :return:
        """
        url = 'https://passport.csdn.net/v1/register/pc/login/doLogin'
        urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
        header = {
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36',
            'referer': 'https://passport.csdn.net/login',
            'origin': 'https://passport.csdn.net',
            'content-Type': 'application/json;charset=UTF-8',
            'x-requested-with': 'XMLHttpRequest',
            'accept': 'application/json, text/plain, */*',
            'accept-encoding': 'gzip, deflate, br',
            'accept-language': 'zh-CN,zh;q=0.9',
            'connection': 'keep-alive',
            'Host': 'passport.csdn.net'
        }

        data = {
            'loginType': '1',
            'pwdOrVerifyCode': str(password),
            'userIdentification': str(username),
            'uaToken': '',
            'webUmidToken': ''
        }

        # login in csdn and get response
        res = requests.post(url, data=json.dumps(data), headers=header, verify=False)

        # login error
        if not res.status_code == 200:
            raise Exception(res.text)

        # assemble user data (username and cookies)
        body = res.json()
        cookies = requests.utils.dict_from_cookiejar(res.cookies)

以上就完成了模拟登录,获取cookies的过程


(四)总结

大体思路分为三个部分:

总之,求人不如求己,简单的小例子,自己动手,丰富实践喔

cabtool使用说明


方式一

如果你是没有任何python基础的同学,或是懒得安装py环境。没有关系,这里也是支持小白式运行的

方式二

在这里插入图片描述
第一步

第二步

第三步

上一篇 下一篇

猜你喜欢

热点阅读