python爬虫爬取CSDN专栏

在学习和工作的时候总是需要到CSDN上找寻所需的博客来看,专栏对应了你所需要的一系列学习资源,但每次打开页面再去慢慢找专栏的内容有点麻烦,且有些博客的文字无法复制,有时候想将内容引用到别的地方也不方便,于是下面是对CSDN专栏的爬虫方法。

以下代码基于CSDN上的博客进行改进优化:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
import parsel
import os
import re
import html2text


def change_title(name):
    mode = re.compile(r'[\\\/\:\*\?\"\<\>\|]')
    newname = re.sub(mode, '_', name)
    return newname


filename = 'html\\'
filename2 = 'md\\'
if not os.path.exists(filename):
    os.mkdir(filename)
if not os.path.exists(filename2):
    os.mkdir(filename2)

html_str = """
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
{article}
</body>
</html>
"""

# 设置 Edge 浏览器的用户数据目录
user_data_dir = r'C:\Users\User Data'
user_option = webdriver.EdgeOptions()
user_option.add_argument(f'--user-data-dir={user_data_dir}')
driver = webdriver.Edge(options=user_option)

# 先打开登录页面(这里假设需要手动登录一次,后续使用用户数据自动登录)
driver.get('https://passport.csdn.net/login')
input("请手动完成登录,登录完成后按回车键继续...")

url = f'https://yolov5.blog.csdn.net/category_12691075_3.html'
# 此处替换相应想爬取的网址
driver.get(url)
time.sleep(3)  # 等待页面加载
response_text = driver.page_source
selector = parsel.Selector(response_text)
href = selector.css(
    '.column_article_list li a::attr(href)').getall()
# 此处换成对应网页的对应属性即可
for i in href:
    driver.get(i)
    time.sleep(3)  # 等待页面加载
    response_1_text = driver.page_source
    selector_1 = parsel.Selector(response_1_text)
    title = selector_1.css('#articleContentId::text').get()  # 文章标题的id
    newtitle = change_title(title)
    content_views = selector_1.css(
        '#content_views').get()  # 文章内容的id
    html_content = html_str.format(article=content_views)
    html_name = filename + newtitle + '.html'
    md_name = filename2 + newtitle + '.md'
    with open(html_name, mode='w', encoding='utf-8') as f:
        f.write(html_content)
    print("正在保存", newtitle, ".html")

    # 将 html 文件转换成 md 格式
    html_text = open(html_name, 'r', encoding='utf-8').read()
    markdown = html2text.html2text(html_text)
    with open(md_name, 'w', encoding='utf-8') as file:
        file.write(markdown)
        print("正在保存", newtitle, ".md")

# 关闭浏览器
driver.quit()

段 Python 代码的主要功能是使用 Selenium 库自动化操作浏览器,爬取 CSDN 博客专栏下的文章,并将文章内容保存为 HTML 和 Markdown 格式的文件。使用时需将要修改的部分转化为自己的地址和url。
对于源代码来说主要优化了无法爬取已购专栏的问题,强化代码应用性。


python爬虫爬取CSDN专栏
http://localhost:8090//archives/pythonpa-chong-pa-qu-yi-gou-csdnzhuan-lan
作者
曾晓涛
发布于
2025年03月03日
许可协议