引言
今天,我将分享如何使用Python的requests
和parsel
库来爬取CSDN
博客的文章,并生成一个Markdown
格式的链接列表导航页。
我在整理这个专栏Linux基础操作合集的文章合集时,发现想要给这个专栏的文章做个导航合集页很麻烦,虽然直接点进这个专栏就可以查看,不需要多此一举,但是我认为如果这个专栏文章非常多,那么整理出一个导航页的文章合集导航页就可以找到需要的文章而不用在专栏页里点击翻页一页一页的翻看了。
比如此时已经更新了26篇文章,
如果后面再添加很多篇,我的第一篇的目录信息又要修改
那么使用这个脚步就可以直接生成目录信息,复制粘贴到文章里即可。
环境准备
在开始之前,请确保你已经安装了Python环境以及以下库:
requests
:用于发送HTTP请求。parsel
:用于解析HTML文档。
你可以通过以下命令安装这些库:
pip install requests parsel
代码解析
以下是爬取CSDN博客文章并生成Markdown链接列表的完整代码:
import requests
import parsel# 定义要爬取的目标网页
url = 'https://blog.csdn.net/qq_52313022/category_12812485.html'
# 设置请求头,模拟浏览器访问
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0'
}html_urls = []
all_urls = []
titles = []
all_titles = []# 循环遍历页面,爬取文章链接和标题
for page in range(1, 5):print(f'开始爬取第{page}页')# 根据页码生成链接if page == 1:link = urlelse:link = 'https://blog.csdn.net/qq_52313022/category_12812485_{}.html'.format(page)# time.sleep(1)# 发送 GET 请求获取网页内容response = requests.get(url=link, headers=headers)if response.status_code == 200:html = response.text# 使用 parsel 解析 HTML 内容url_selector = parsel.Selector(html)else:print('请求失败')break# 获取本页所有文章链接html_urls = url_selector.css('.column_article_list li a::attr(href)').getall()# 获取本页所有文章标题titles = url_selector.css(' div.column_article_title h2::text').getall()titles = [title.strip() for title in titles]# 创建一个只保留非空标题的列表all_titles.extend(titles[i].replace(' ', '_') for i in range(len(titles)) if titles[i] != '')all_urls.extend(html_urls)print(f'第{page}页文章链接:{html_urls}')print(f'第{page}页文章标题:{titles}')print("所有文章链接:",all_urls)
print("所有文章标题:",all_titles)# 将 URL 和标题组合成 Markdown 超链接
markdown_links = []
for url, title in zip(all_urls, all_titles):markdown_links.append(f'[{title}]({url})')# 将超链接排序
markdown_links.sort()print("Markdown 超链接:",markdown_links)
# 写入 Markdown 文件
with open('output.md', 'w', encoding='utf-8') as f:for link in markdown_links:f.write(link + '\n')
print('============================================')
print("Markdown 超链接已成功写入 output.md 文件。")
代码说明
- 导入库:首先导入
requests
和parsel
库。 - 设置目标URL和请求头:定义要爬取的CSDN博客页面,并设置请求头以模拟浏览器访问。
- 循环遍历页面:通过循环遍历指定的页面范围(这里是前4页)。
- 发送请求和解析HTML:对每个页面发送GET请求,并使用
parsel
解析HTML内容。 - 提取文章链接和标题:使用CSS选择器提取文章的链接和标题。
- 生成Markdown链接:将提取的链接和标题组合成Markdown格式的超链接。
- 写入文件:将生成的Markdown链接写入
output.md
文件。
结语
通过上述步骤,你可以轻松地爬取CSDN博客文章并生成Markdown链接列表。这不仅有助于信息整理,还可以作为学习Python网络爬虫的一个实用案例。希望这篇文章对你有所帮助!