爬虫代码进入古诗文网(https://www.gushiwen.cn),选择在导航栏选择推荐页面,采集该页面内所有古诗词。要求采集包括诗词标题、作者、朝代、内容,代码详解
时间: 2024-09-26 14:10:17 浏览: 111
爬虫学习笔记:爬取古诗文网
5星 · 资源好评率100%
在Python中编写爬虫程序来抓取古诗文网(https://www.gushiwen.cn)的推荐页面内容,我们需要使用`requests`库发送HTTP请求获取HTML页面,然后利用`lxml`库解析HTML内容提取所需信息。以下是一个详细的步骤说明及示例代码:
1. 首先,确保已经安装了必要的库:
```bash
pip install requests lxml beautifulsoup4
```
2. 导入库并定义函数:
```python
import requests
from bs4 import BeautifulSoup
```
注意,这里使用BeautifulSoup代替了原代码中的etree,因为它更适合处理HTML文档。
3. 定义URL和头部信息:
```python
url = 'https://www.gushiwen.cn/zixun/'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36',
'Referer': url, # 添加referer有助于模拟浏览器行为
}
```
4. 发送GET请求并获取响应:
```python
response = requests.get(url, headers=headers)
if response.status_code == 200:
page_content = response.text
else:
print("请求失败,状态码:", response.status_code)
return None
```
5. 解析HTML内容:
```python
soup = BeautifulSoup(page_content, 'lxml')
poems = soup.find_all('div', class_='list_item') # 找到包含诗词的信息区域
```
6. 提取并保存信息:
```python
poem_info_list = []
for poem in poems:
title = poem.find('span', class_='title').text.strip()
author = poem.find('span', class_='author').text.strip()
dynasty = poem.find('span', class_='time').text.strip()
content = poem.find('div', class_='txt').text.strip()
# 创建字典存储每个诗词的数据
poem_dict = {"标题": title, "作者": author, "朝代": dynasty, "内容": content}
poem_info_list.append(poem_dict)
# 将列表转换为json并保存
with open('古诗词信息.json', 'w', encoding='utf-8') as f:
json.dump(poem_info_list, f, ensure_ascii=False, indent=2)
```
以上就是整个爬虫的代码流程。这个脚本会抓取指定页面的所有推荐诗词及其相关信息,并将其保存在一个名为`古诗词信息.json`的文件中。注意,实际运行时可能需要处理网络连接问题以及HTML结构变化带来的影响。如果遇到动态加载的内容,可能需要考虑使用Selenium等工具配合。
阅读全文