Python爬取诗词名句网
引言
随着互联网的发展,我们可以轻松地获取各种各样的信息,包括文字、图片、音频等。而在这些信息中,诗词名句无疑是其中一种富有文化底蕴的表达方式。有许多网站专门收集整理了大量的诗词名句,供人们浏览和学习。本文将介绍如何使用Python编写代码,爬取一个诗词名句网站的数据,并进行简单的数据分析。
目标
我们选择一个名为“诗词网”的网站作为爬取的目标。我们的目标是爬取该网站上的诗词名句数据,并进行简单的统计分析。具体来说,我们需要获取以下信息:
- 诗词的标题
- 诗词的作者
- 诗词的内容
准备工作
在开始之前,我们需要准备一些工具和库。首先,我们需要安装Python解释器,我这里选择使用Python 3.x版本。其次,我们需要安装一些用于爬虫的库,包括requests
和BeautifulSoup
。可以通过以下命令安装:
pip install requests
pip install beautifulsoup4
爬取网页数据
首先,我们需要获取网页的源代码。我们可以使用requests
库发送HTTP请求,并获取响应的内容。下面是一个示例代码:
import requests
url = '
response = requests.get(url)
html = response.text
print(html)
运行上述代码,我们可以看到网页的源代码。但是,这个源代码并不容易阅读和解析。接下来,我们将使用BeautifulSoup
库对网页进行解析。
解析网页数据
解析网页是爬虫的核心部分。我们可以使用BeautifulSoup
库将网页的源代码解析成可操作的对象,方便我们提取所需的信息。
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
# 选择一个诗词
poem = soup.select_one('.shiwen_item')
# 提取标题
title = poem.select_one('.shisoncont h3').text
# 提取作者
author = poem.select_one('.source a').text
# 提取内容
content = poem.select_one('.contson').text
print('标题:', title)
print('作者:', author)
print('内容:', content)
运行上述代码,我们可以看到输出的诗词的标题、作者和内容。但是这只是一个示例,我们需要遍历整个网页,提取所有的诗词数据。
poems = soup.select('.shiwen_item')
for poem in poems:
title = poem.select_one('.shisoncont h3').text
author = poem.select_one('.source a').text
content = poem.select_one('.contson').text
print('标题:', title)
print('作者:', author)
print('内容:', content)
print('---')
数据存储
在爬取到数据之后,我们可以选择将其存储到本地或者数据库中,方便以后的使用和分析。这里我们选择使用CSV文件进行存储。首先,我们需要将数据保存到一个列表中,然后使用csv
库将列表写入到CSV文件中。
import csv
data = []
for poem in poems:
title = poem.select_one('.shisoncont h3').text
author = poem.select_one('.source a').text
content = poem.select_one('.contson').text
data.append([title, author, content])
with open('poems.csv', 'w', encoding='utf-8', newline='') as file:
writer = csv.writer(file)
writer.writerow(['标题', '作者', '内容'])
writer.writerows(data)
数据分析
得到诗词数据之后,我们可以进行一些简单的数据分析。这里我们以统计每个作者的诗词数量为例。
import pandas as pd
df = pd.read_csv('poems.csv')
author_counts = df['作者'].value_counts()
print(author_counts)
输出结果将会显示每个作者的诗词数量。
总结
通过上