]爬取https://www.shicimingju.com/chaxun/zuozhe/1.html中前3页的内容,包括诗的编号、标题、内容和链接,将结果保存为csv文件,详细步骤和层级关系
时间: 2024-12-31 16:48:49 浏览: 7
首先,你需要安装一些Python库来完成这个任务,比如`requests`用于发送HTTP请求获取网页内容,`BeautifulSoup`用于解析HTML文档,以及`pandas`来处理数据并导出到CSV。如果你还没有安装,可以使用下面的命令:
```bash
pip install requests beautifulsoup4 pandas
```
接下来,是一个简单的步骤说明:
1. **导入必要的库**:
```python
import requests
from bs4 import BeautifulSoup
import csv
import pandas as pd
```
2. **创建函数来抓取单页内容**:
```python
def fetch_page(url):
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
return extract_data(soup)
def extract_data(soup):
poems_list = []
# 找到包含诗歌信息的部分,这通常在CSS选择器或XPath中指定
poem_elements = soup.select('.poem-item') # 这里假设CSS选择器正确
for element in poem_elements:
poem_id = element.find('span', {'class': 'id'}).text.strip()
title = element.find('h2').text.strip()
content = element.find('div', {'class': 'content'}).text.strip()
link = f"{url}#{title}" # 链接通常是相对路径,这里直接拼接标题作为唯一标识
poems_list.append((poem_id, title, content, link))
return poems_list
```
3. **爬取和保存数据**:
```python
def scrape_pages(start=1, end=3):
all_poems = []
base_url = "https://www.shicimingju.com/chaxun/zuozhe/"
for i in range(start, end + 1):
url = f"{base_url}{i}.html"
page_data = fetch_page(url)
all_poems.extend(page_data)
df = pd.DataFrame(all_poems, columns=['编号', '标题', '内容', '链接'])
df.to_csv('poems.csv', index=False) # 导出为CSV文件
# 开始抓取
scrape_pages()
```
注意:这个示例假设网站结构和CSS选择器是固定的,并且每个页面有相同的布局。如果实际网站有所不同,你可能需要调整选择器以适应实际情况。
阅读全文