用爬虫爬取CSDN主页文章
2023-10-23 13:44:13
前言
CSDN是一个备受欢迎的中文技术社区,每天都有大量的新文章和问题发表。如果您想了解最新的技术动态,或者在学习和工作中遇到问题需要帮助,CSDN都是一个非常好的资源。
但是,CSDN的页面设计比较复杂,直接使用爬虫爬取文章可能会遇到一些困难。因此,我们需要对爬虫头部进行伪装,让它看起来像一个普通的浏览器。
伪装爬虫头部
我们可以使用Python的requests库来伪装爬虫头部。requests库是一个非常强大的HTTP请求库,它可以帮助我们轻松地发送HTTP请求并获取响应。
import requests
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
'Connection': 'keep-alive',
}
response = requests.get('https://www.csdn.net/', headers=headers)
在上面的代码中,我们首先定义了一个名为headers的字典,其中包含了伪装爬虫头部的信息。然后,我们使用requests.get()函数发送了一个HTTP请求,并将伪装后的头部作为参数传递给它。
分析页面
获取到CSDN主页的HTML代码后,我们需要对它进行分析,以便提取出文章标题、链接、代码和思路等信息。
我们可以使用Python的BeautifulSoup库来分析HTML代码。BeautifulSoup是一个非常强大的HTML解析库,它可以帮助我们轻松地提取出HTML代码中的信息。
from bs4 import BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')
articles = soup.find_all('article', class_='blog-content-box')
for article in articles:
title = article.find('h4', class_='title').text.strip()
link = article.find('a', class_='csdn-tracking-statistics').get('href')
code = article.find('pre', class_='hljs').text.strip()
solution = article.find('div', class_='solution-box').text.strip()
print(title)
print(link)
print(code)
print(solution)
在上面的代码中,我们首先使用BeautifulSoup.find_all()函数提取出所有属于class="blog-content-box"的标签。然后,我们遍历这些标签,并使用BeautifulSoup.find()函数提取出文章标题、链接、代码和思路等信息。
存储数据
提取到文章信息后,我们可以将其存储到数据库或文件系统中。
如果要存储到数据库中,我们可以使用Python的peewee库来创建一个简单的数据库。
import peewee
db = peewee.SqliteDatabase('articles.db')
class Article(peewee.Model):
title = peewee.CharField()
link = peewee.CharField()
code = peewee.TextField()
solution = peewee.TextField()
class Meta:
database = db
Article.create_table()
for article in articles:
Article.create(
title=article.title,
link=article.link,
code=article.code,
solution=article.solution
)
在上面的代码中,我们首先创建了一个名为articles.db的数据库。然后,我们定义了一个名为Article的模型,其中包含了文章标题、链接、代码和思路等信息。最后,我们遍历文章信息,并将它们存储到数据库中。
如果要存储到文件系统中,我们可以使用Python的open()函数来创建一个文件。
with open('articles.txt', 'w') as f:
for article in articles:
f.write(article.title + '\n')
f.write(article.link + '\n')
f.write(article.code + '\n')
f.write(article.solution + '\n')
在上面的代码中,我们首先创建一个名为articles.txt的文件。然后,我们遍历文章信息,并将它们写入到文件中。
结语
在本文中,我们介绍了如何使用Python爬虫从CSDN主页爬取最近发表的文章及其代码和思路。我们还介绍了如何分析页面、存储数据等内容。希望本文能够对您有所帮助。