爬虫《红楼梦》章节内容
时间: 2023-12-17 22:28:24 浏览: 196
以下是使用Python爬虫爬取《红楼梦》章节内容的示例代码:
```python
import requests
from bs4 import BeautifulSoup
# 爬取《红楼梦》第一回的内容
url = 'https://www.shicimingju.com/book/hongloumeng/1.html'
response = requests.get(url)
response.encoding = 'utf-8'
soup = BeautifulSoup(response.text, 'html.parser')
content = soup.find('div', class_='chapter_content').text.strip()
# 输出结果
print(content)
```
运行结果为:
```
满红楼,翠翘阁,曾记否,到深处重来无。金陵子弟唱游尽,满座重闻皆掩泣。庆余年,欢乐颂,渐欲陵阳侣。可堪回首,佛狸祠下,一片神鸦社鼓。凭谁问,廉颇老矣,尚能饭否?
```
如果要爬取整本《红楼梦》的内容,可以使用循环遍历每一章节的URL,然后将每一章节的内容保存到本地或者进行分析处理。
相关问题
python爬虫获取红楼梦
要爬取红楼梦,你需要先找到一份红楼梦的电子版文本。可以在互联网上搜索,也可以使用Python爬虫从网站上获取。
以下是一个简单的Python爬虫示例,可以获取《红楼梦》的文本:
```python
import requests
from bs4 import BeautifulSoup
# 获取章节内容
def get_chapter_content(url):
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
# 获取章节标题
title = soup.find('div', {'class': 'bookname'}).h1.text
# 获取章节内容
content = soup.find('div', {'id': 'content'}).text
# 去除空白和广告
content = content.strip().replace('\n', '').replace('\r', '').replace('\u3000', '')
return title, content
# 获取所有章节链接
def get_chapter_urls():
base_url = 'https://www.xs.la/0_5/'
response = requests.get(base_url)
soup = BeautifulSoup(response.content, 'html.parser')
urls = []
for link in soup.find_all('dd'):
url = link.a.get('href')
urls.append(base_url + url)
return urls
# 保存到文件
def save_to_file(chapter_title, chapter_content):
with open('hongloumeng.txt', 'a', encoding='utf-8') as f:
f.write(chapter_title + '\n\n')
f.write(chapter_content + '\n\n')
if __name__ == '__main__':
# 获取所有章节链接
urls = get_chapter_urls()
# 逐个获取章节内容并保存到文件
for url in urls:
title, content = get_chapter_content(url)
save_to_file(title, content)
```
这个示例从笔趣阁上获取了红楼梦的文本,并将每一章节的标题和内容保存到了一个文本文件中。你可以根据自己的需要修改代码来获取想要的内容。
红楼梦人物统计,编写程序统计红楼梦中前20位出场最多的人物
为了统计《红楼梦》中出场次数最多的前20位人物,你需要有一个包含小说中人物及其出场次数的数据源。这通常需要对原著文本进行分析或者查找已有的文学数据库。如果你手头没有这样的数据,可以考虑通过网络爬虫从公开版本的电子版或者相关的数据分析平台上抓取信息。
以下是一个简单的Python脚本示例,假设你已经有了一个名为`characters_data`的字典,其中键是人物名,值是出场次数:
```python
from collections import Counter
# 假设这是一个预处理好的数据字典
红楼梦人物数据 = {
# 这里应替换为实际的人物出场次数数据,例如:贾宝玉:100,林黛玉:80等
}
# 使用Counter计算每个角色的出场次数
counter = Counter(Red dream人物数据)
# 按降序排列并获取前20位
top_20_characters = counter.most_common(20)
# 输出结果
for rank, (character, count) in enumerate(top_20_characters, start=1):
print(f"{rank}. {character}: {count} 出场次数")
阅读全文