将自己在CSDN上的文章下载到本地并上传到掘金

本文介绍了如何利用Puppeteer自动化下载CSDN上的个人文章,并解决图片水印和防盗链问题,然后将文章上传到掘金。通过登录、获取文章列表、下载内容与图片、处理图片链接,最后实现文章上传的过程。
摘要由CSDN通过智能技术生成

CSDN 算是一个老牌技术网站了,很多喜欢写文章的人,一开始都是在 CSDN上发布,但是可能由于某些原因,有的人想把自己在 CSDN上的文章放到其他的网站上(嗯,比如掘金),但是由于在 CSDN上发布的文章数量很多,一篇篇复制粘贴下来理论上是可行的,就是手酸了点。

不过,作为技术型体力劳动者人才,重复一种动作几十甚至上百遍未免有点丢失 biger,想起前段时间我花费了 大量时间 翻译的 Puppeteer,至今还没体现出其价值来,于是决定就用它了。

本文的可运行示例代码已经上传到 github了,需要的请自取,顺手 star哦~


下载

想要获取到文章的标题和内容信息,第一个想到的就是文章的详情页,标题就一行,没那么多道道还好说,但是内容就要复杂点了,如果直接分析内容元素的 DOM结构当然可行,但未免有点麻烦,如果直接获取内容的字符串,例如使用 textContent这种方法,又会丢失语义,没办法获得内容的层级结构

不过我转念一想,既然这文章是自己的,那么完全可以进入文章的编辑页啊,编辑框内的内容不就是文章的原始内容吗,我写文章都是用 md编辑器,那么编辑框里的内容就是 md源文件,正是我想要的东西。

这里写图片描述
想要进入后台编辑页,必须要登录,于是先登录,CSDN的登录页链接是 https://passport.csdn.net/account/login,登录分为账号密码登录和第三方登录,就按最简单的来,所以我选择了账号密码登录,如果你之前一直是第三方登录,没有账号密码,那么你可以选择现在去创建一个,或者换一种写法,就用第三方登录,我这里演示账号密码登录的流程 第三方登录你自己想办法

await page.goto('https://passport.csdn.net/account/login', { timeout })
// 切换到账号密码登录
await page.click('.login-code__open')
await page.waitForSelector('#username')
await sleep()
// 在表单中输入 账号 密码
await page.type('#username', 'Your Name')
await page.type('#password', 'Your pwd')
// 登录
const loginBtn = await page.$('.logging')
// 点击登录按钮
await loginBtn.click()
await page.waitForNavigation()
console.log('csdn登录成功')

登录成功后,先别急着去编辑页,因为还没确定编辑页链接,先把你自己所有发布的文章详情页的链接拿到,就拿我自己来举栗吧。

每个人创作者都有这样一个页面,例如 https://blog.csdn.net/DeepLies,这个页面罗列了你所有的文章:

这里写图片描述

在这个页面的最底部,

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值