Python 3.x Python,阅读RDF文件,刮古腾堡的书

Python 3.x Python,阅读RDF文件,刮古腾堡的书,python-3.x,rdf,Python 3.x,Rdf,我知道Gutenberg(一家提供公共领域书籍的公司)不允许自动访问其网站,但他们确实为此目的提供了“机器可读格式”,特别是RDF。一、 作为一个新手,我从未听说过这种格式,谷歌也没什么帮助。我已经获得了rdflib模块,坦率地说,我不知道该如何处理它 我试图做的是提取文本,我假设可以通过下载的RDF文件合法访问这些文本。在rdf文件中,除其他外,有以下行: <dcterms:hasFormat rdf:resource="http://www.gutenberg.org/ebooks/1

我知道Gutenberg(一家提供公共领域书籍的公司)不允许自动访问其网站,但他们确实为此目的提供了“机器可读格式”,特别是RDF。一、 作为一个新手,我从未听说过这种格式,谷歌也没什么帮助。我已经获得了rdflib模块,坦率地说,我不知道该如何处理它

我试图做的是提取文本,我假设可以通过下载的RDF文件合法访问这些文本。在rdf文件中,除其他外,有以下行:

<dcterms:hasFormat rdf:resource="http://www.gutenberg.org/ebooks/100.txt.utf-8"/> 

它将引导到古腾堡页面,其中包含该书的文本文件,我假设程序可以从中获取文本,尽管我不确定,因为我看不出直接抓取他们的站点和通过RDF文件抓取它们之间的区别

filename = 'cache/epub/78/pg78.rdf'
from lxml import etree
rdf = open(filename).read()
tree = etree.fromstring(rdf)
resource_tag = '{http://www.w3.org/1999/02/22-rdf-syntax-ns#}resource'
hasFormat_tag = './/{http://purl.org/dc/terms/}hasFormat'
resources = [el.attrib[resource_tag] for el in tree.findall(hasFormat_tag)]
urls = [url for url in resources if url.endswith('htm')]
// urls[0] is 'http://www.gutenberg.org/files/78/78-h/78-h.htm'

那么,如果文本完全可以通过编程方式访问,我该怎么做呢

在中找不到全文。不过,它确实包含几种格式的文本URL。下载并解压缩后,下面介绍如何从特定RDF文件获取HTML图书URL

filename = 'cache/epub/78/pg78.rdf'
from lxml import etree
rdf = open(filename).read()
tree = etree.fromstring(rdf)
resource_tag = '{http://www.w3.org/1999/02/22-rdf-syntax-ns#}resource'
hasFormat_tag = './/{http://purl.org/dc/terms/}hasFormat'
resources = [el.attrib[resource_tag] for el in tree.findall(hasFormat_tag)]
urls = [url for url in resources if url.endswith('htm')]
// urls[0] is 'http://www.gutenberg.org/files/78/78-h/78-h.htm'
一旦你有了你想要的书的HTML版本的URL,下面是如何抓取文本

import requests
from lxml import etree
response = requests.get(urls[0])
html = etree.HTML(response.text)
text = '\n'.join([el.text for el in html.findall('.//p')])
text
现在包含的全文减去古腾堡项目元数据、目录和章节标题

>>> text[:100]
u'\r\nI had this story from one who had no business to tell it to me, or to\r\nany other.  I may credit th'

请注意,关于古腾堡的书籍之间存在不一致之处,因此您的结果可能会有所不同。

古腾堡项目以RDF格式提供它们的目录,而不是实际的书籍文本,因此这无法解决您的问题problem@RobV我认为用户的观点是三个
dcterms:hasFormat
为文本提供了一个URL。不过,我同意,如果自动访问被禁止,仅仅拥有一个URL是没有帮助的,因为访问它仍然是一种自动访问。谷歌上的哪些搜索没有多大帮助?从a开始的几次点击都是关于RDF是什么,它是如何使用的,它看起来像什么,等等。它似乎不是我想要的东西,这显然是因为它不是为了我需要的,因此我认为我错过了一些东西。