用python下载csdn中喜欢博主的文章

起因

昨天中午正在舒舒服服的浏览着大佬们的博客,突然寝室又停电,WiFi也断了,还能不能愉快的玩耍了???虽然学校是有名的停电停网停水大学,但是每天中午停一次电也太难受了吧。难道是给新来的学弟们一个下马威,提前了解学校?
于是想着能不能把博客下载保存到电脑上随时可以查看。

开始动手

首先查看csdn,就拿我的来分析

  1. 首先要找到博主所有文章的url
    在这里插入图片描述
    看到了所有的网址都有,那我们就需要想办法把url提取出来,所以我们这里用css选择器
url_list=sel.css('.article-list a::attr(href)').getall()
  1. 得到了所有文章的url,接下来就是把这篇博客下载下来。因为下载下来的内容是html类型,不是我们看到的markdown类型,所以这里我们还需要一个html转换为markdown形式的库,还好有大佬已经做好了这个库–tomd,用pip install tomd就可以安装了。
    在这里插入图片描述
    在这里插入图片描述
    找到了文章的标题和内容,还是用css选择器提取,再用正则去除一下多余的网页标签,完整的文章就下载下来了。

完整代码

import requests
import parsel
import tomd
import re
import os

def download_userall(user_name):
    os.mkdir('./csdn博客/{}'.format(user_name))
    page=1
    while True:
        index_url='https://blog.csdn.net/{}/article/list/{}?'.format(user_name,page)
        response=requests.get(index_url)
        html=response.text
        sel=parsel.Selector(html)
        url_list=sel.css('.article-list a::attr(href)').getall()
        #print(url_list)
        if not url_list:
            break
        for url in url_list:
            download_boke(url)
        page+=1
        print("正在爬取第{}页".format(page))


def download_boke(url):
    response=requests.get(url)
    html=response.text
    sel=parsel.Selector(html)
    title=sel.css('.title-article::text').get()
    content=sel.css('article').get()

    #转化为markdown
    text=tomd.Tomd(content).markdown
    #去除网页标签
    text=re.sub('<a.*?a>',"",text)
    text = re.sub('<b.*?b>', "", text)
    text = re.sub('<br.*?br>', "", text)
    text = re.sub('<li.*?li>', "", text)

    #保存md文件
    with open("./csdn博客/{}/{}.md".format(user_name,title),mode='w',encoding='utf-8') as f:
        f.write("# "+title)
        f.write(text)

    f.close()

if __name__ == '__main__':
    user_name=input("请输入博主的user_name:\n")
    download_userall(user_name)

运行结果

在这里插入图片描述
在这里插入图片描述
成功的把所有博主的所有博客都爬取下来了,需要爬取不同的博主只需要输入不同的user_name就可以啦

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shelgi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值