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

时间:2018-11-07 00:44:05

标签: python html web-scraping beautifulsoup natural-language-processing

我目前正在从事一个项目,在该项目中,我下载了一堆相关的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>

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

1 个答案:

答案 0 :(得分:0)

甚至不用担心美丽的汤,只需使用正则表达式即可:

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

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

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