python爬取csdn专栏并储存为md文件

今天闲着无聊,突然想要爬一下csdn里的内容。又因为我是用hexo建的blog,就想保存为md文件慢慢观看。

先打开一个专栏,就选 Jack-Cui 的 Python3网络爬虫入门 吧。

首先我们分析一下它的目录的元素:

看到了吗,这些a标签就是目录的元素。 

现在,编写代码:

from bs4 import BeautifulSoup
import requests
headers={
"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36"
}
url = 'https://blog.csdn.net/c406495762/category_9268672.html'
res = requests.get(url,headers=headers)
soup = BeautifulSoup(res.text,'html.parser')
div = soup.find('div',id = 'column')
a = div.find('ul',class_ = 'column_article_list').find_all('a')
url = []
for i in a:
    url.append(i.get('href'))
print(url)

 然后,让我们把单个页面转成md吧。

这个问题看似很难,可是我们上网搜呗。

你看这么多方法,我最喜欢的是 html2text 库,使用起来非常简单:

def md(url):
    res = requests.get(url)
    soup = BeautifulSoup(res.text,'html.parser')
    content = str(soup.find('div',id = 'article_content')).replace('<blockquote>','').replace('</blockquote>','')
    name = soup.find('h1').text
    start = f'''---
title: {name}
---
'''
    end = f'''
文章转载自:{url}
'''
    md = html2text.html2text(content).replace('-\n','-')
    w = start + md + end
    with open(f'{name}.md','w') as f:
        f.write(w)
md('https://jackcui.blog.csdn.net/article/details/109046264')

简单来说就只需要这样一行代码:

html2text.html2text('HTML字符串')

再进行一些优化后,🆗了。

弄到在线编辑器里看一下:

怎么看不了图片???

这可能是因为csdn有通过Referer 的反爬机制。

不过我们可以在文件顶部添加这一行:

<meta name="referrer" content="no-referrer">

 更改代码:

def d(str,d_list):
    s = str
    for i in d_list:
        s = s.replace(i,'')
    return s

def md(url):
    res = requests.get(url)
    soup = BeautifulSoup(res.text,'html.parser')
    content = d(str(soup.find('div',id = 'article_content')),['<blockquote>','</blockquote>'])
    name = soup.find('h1').text
    start = f'''
---
title: {name}
---
<meta name="referrer" content="no-referrer">

'''
    end = f'''
文章转载自:{url}
'''
    md = html2text.html2text(content).replace('-\n','-')
    w = start + md + end
    name = d(name,['\\','/',':',':','*','?','?','"','<','>','|'])
    print(name)
    with open(f'./md/{name}.md','w') as f:
        f.write(w)

md('https://jackcui.blog.csdn.net/article/details/58716886')

图片就出来了:

 整合代码,保存所有文章吧。

from bs4 import BeautifulSoup
import requests,html2text,time

headers={
"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36"
}
url = 'https://blog.csdn.net/c406495762/category_9268672.html'
res = requests.get(url,headers=headers)
soup = BeautifulSoup(res.text,'html.parser')
div = soup.find('div',id = 'column')
a = div.find('ul',class_ = 'column_article_list').find_all('a')
url = []
for i in a:
    url.append(i.get('href'))
print(url)

def d(str,d_list):
    s = str
    for i in d_list:
        s = s.replace(i,'')
    return s

def md(url):
    res = requests.get(url)
    soup = BeautifulSoup(res.text,'html.parser')
    content = d(str(soup.find('div',id = 'article_content')),['<blockquote>','</blockquote>'])
    name = soup.find('h1').text
    start = f'''
---
title: {name}
---
<meta name="referrer" content="no-referrer">

'''
    end = f'''
文章转载自:{url}
'''
    md = html2text.html2text(content).replace('-\n','-')
    w = start + md + end
    name = d(name,['\\','/',':',':','*','?','?','"','<','>','|'])
    print(name)
    with open(f'./md/{name}.md','w') as f:
        f.write(w)

for i in url:
    md(i)

复制到hexo的_post文件夹后,完成了!

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Python是一种功能强大的编程语言,可以用来开发各种各样的应用程序,而网络爬虫则是其最常用的领域之一。利用Python编写爬虫程序,可以从互联网上获取到各种各样的数据,如果你想爬取CSDN付费专栏,那么这里将会为你介绍如何实现。 首先,我们需要使用Python库中的requests库访问CSDN网站,并模拟登录。CSDN付费专栏是需要购买的,因此我们必须先登录才能看到其内容。然后,我们需要使用BeautifulSoup库解析 HTML 页面,从而找到目标专栏页面的URL,进而获取其内容。最后,将爬取到的内容保存到本地文件中。 下面是具体实现的步骤: 1. 安装 requests、BeautifulSoup 和 pandas 这些或者其他需要的Python库 2. 使用 requests 库登录 CSDN 网站,并获取登录后的 Cookies 3. 利用 BeautifulSoup 库解析HTML页面,找到目标专栏的URL 4. 利用requests 库访问目标专栏的URL,获取HTML页面内容,并解析出所有文章的URL 5. 在每篇文章的页面中,使用 requests 库获取文章内容,并使用 BeautifulSoup 解析 6. 将文章内容保存到本地文件中,或者将其存储到数据库中。 虽然Python爬虫的过程相对简单,但是在爬取过程中也需要注意一些细节,例如请求频率、不要过度访问同一网站等问题。此外,由于CSDN网站会采取一些反爬虫的策略, 因此,我们在编写爬虫程序时,也需要小心操作,避免被封禁。总之,爬取CSDN付费专栏需要一些技术和经验,需要认真研究和分析其网站结构和反爬虫策略,才能编写出高效、健壮、安全的爬虫程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值