Python Html:从Html文件中提取部分文本



我目前正在进行一个项目,下载了一堆相关的html文件,并从中收集数据。我注意到的一件事是,尽管html文件的整体格式相似,但有时各种文件使用不同的标签来存储类似的信息。

例如,在一个文件中,它可能是:

<html>
<head>
<p> Title: The GodFather </p>
<p> Author: Mario Puzo </p>
</head>
<html>

在另一个例子中,它可能是:

<html>
<head>
<p> Heading </p>
<pre> Ebook from xyz site: Please donate to our foundation at www.abc.com
Title: The GodFather
Author: Mario Puzo
</pre>
</head>
</html>

我可以肯定地说,">标题:"one_answers">Author:在所有html文件中都很常见。我想提取">标题:"one_answers">Author:"旁边的文本。我假设我使用漂亮的汤来提取每个html文件。但是要提取标题作者,使用正则表达式是最好的吗?

甚至不用担心漂亮的汤,只需使用正则表达式:

re.findall(r'(?<=Author:).*?(?=<)', html.replace('n', ''))
>>> [' Mario Puzo']
re.findall(r'(?<=Title:).*?(?=<)', html.replace('n', ''))
>>> [' The GodFatherAuthor: Mario Puzo']

这将与"作者"匹配,当然,它可能不适用于您的某些标题,因为它在另一个标记之前也包含"作者"(如上所示(,在这种情况下,您可以对所有已爬网的标题执行title.split('Author')[0],因为如果Author不在字符串中,则此方法不会更改字符串。