从古腾堡项目中抓取书籍正文文本

问题描述

我是 python 的新手,我正在寻找一种方法提取古腾堡-de 上可用的现有开源书籍,例如 this one 我需要使用它们进行进一步的分析和文本挖掘。

我尝试了在教程中找到的这段代码,它提取元数据,但它给我的不是正文内容,而是我需要从中抓取文本的“页面”列表。

import requests
from bs4 import BeautifulSoup

# Make a request
page = requests.get(
    "https://www.projekt-gutenberg.org/keller/heinrich/")
soup = BeautifulSoup(page.content,'html.parser')

# Extract title of page
page_title = soup.title

# Extract body of page
page_body = soup.body

# Extract head of page
page_head = soup.head

# print the result
print(page_title,page_head)

我想我可以用它作为提取它的第二步吗?不过,我不确定如何。

理想情况下,我希望以表格方式存储它们并能够将它们保存为 csv,同时保留元数据作者、标题、年份和章节。有什么想法吗?

解决方法

会发生什么?

首先你会得到一个页面列表,因为你没有请求正确的url

page = requests.get('https://www.projekt-gutenberg.org/keller/heinrich/hein101.html')

建议如果您循环所有 urls 将内容存储在 listdicts 中并将其推送到 csvpandas 或 ...

示例

import requests
from bs4 import BeautifulSoup

data = []

# Make a request
page = requests.get('https://www.projekt-gutenberg.org/keller/heinrich/hein101.html')
soup = BeautifulSoup(page.content,'html.parser')

data.append({
    'title': soup.title,'chapter': soup.h2.get_text(),'text': ' '.join([p.get_text(strip=True) for p in soup.select('body p')[2:]])
    }
)

data