用于在python中从html提取所有常规文本的正则表达式
如何从部分html文本中提取非html标记的所有内容 也就是说,如果我有这样的东西:用于在python中从html提取所有常规文本的正则表达式,python,regex,Python,Regex,如何从部分html文本中提取非html标记的所有内容 也就是说,如果我有这样的东西: <div>Hello</div><h3><div>world</div></h3> Helloworld 我想提取['Hello','world'] 我想到了正则表达式: >[a-zA-Z0-9]+< [a-zA-Z0-9]+< 但它不包括特殊字符和中文或希伯来文字符,我需要这些字符 从该职位: 你不能用正则表达式解析H
<div>Hello</div><h3><div>world</div></h3>
Helloworld
我想提取['Hello','world']
我想到了正则表达式:
>[a-zA-Z0-9]+<
[a-zA-Z0-9]+<
但它不包括特殊字符和中文或希伯来文字符,我需要这些字符 从该职位: 你不能用正则表达式解析HTML。太贵了 复杂的。RE's无法处理将在中工作 一个浏览器作为一个适当的文本,但可能会阻碍一个天真的重新 使用合适的HTML解析器,您会更快乐、更成功。 Python人员经常使用一些漂亮的东西来解析HTML和 去掉标签和脚本 此外,从设计上讲,浏览器可以容忍格式错误的HTML。所以你会经常 发现自己试图解析HTML,这显然是不正确的,但是 在浏览器中正常工作 您可能能够用RE解析糟糕的HTML。它所需要的只是 耐心和努力工作。但使用别人的工具通常更简单 解析器
你应该看看 从该职位: 你不能用正则表达式解析HTML。太贵了 复杂的。RE's无法处理将在中工作 一个浏览器作为一个适当的文本,但可能会阻碍一个天真的重新 使用合适的HTML解析器,您会更快乐、更成功。 Python人员经常使用一些漂亮的东西来解析HTML和 去掉标签和脚本 此外,从设计上讲,浏览器可以容忍格式错误的HTML。所以你会经常 发现自己试图解析HTML,这显然是不正确的,但是 在浏览器中正常工作 您可能能够用RE解析糟糕的HTML。它所需要的只是 耐心和努力工作。但使用别人的工具通常更简单 解析器
正如Avi已经指出的,这对于正则表达式来说太复杂了。使用
get_text
from或clean_html
from从html中提取文本
from bs4 import BeautifulSoup
clean_text = BeautifulSoup(html).get_text()
或
感谢GuillaumeA,另一个选择是使用:
必须指出的是,如果html格式不好,上述html解析器将以不同的成功程度完成这项工作,因此您应该进行实验,看看什么最适合您的输入数据。正如Avi已经指出的,这对于正则表达式来说太复杂了。使用
get_text
from或clean_html
from从html中提取文本
from bs4 import BeautifulSoup
clean_text = BeautifulSoup(html).get_text()
或
感谢GuillaumeA,另一个选择是使用:
必须指出的是,如果html格式不好,上述html解析器将以不同的成功程度完成这项工作,因此您应该进行实验,看看什么最适合您的输入数据。我不熟悉Python,但下面的正则表达式可以帮到您
<\s*(\w+)[^/>]*>
]*>
在哪里,
<: starting character
\s*: it may have whitespaces before tag name (ugly but possible).
(\w+): tags can contain letters and numbers (h1). Well, \w also matches '_', but it does not hurt I guess. If curious use ([a-zA-Z0-9]+) instead.
[^/>]*: anything except > and / until closing >
\>: closing >
]*:除>和/或直到结束之外的任何内容>
\>:结束>
我不熟悉Python,但是下面的正则表达式可以帮助您
<\s*(\w+)[^/>]*>
]*>
在哪里,
<: starting character
\s*: it may have whitespaces before tag name (ugly but possible).
(\w+): tags can contain letters and numbers (h1). Well, \w also matches '_', but it does not hurt I guess. If curious use ([a-zA-Z0-9]+) instead.
[^/>]*: anything except > and / until closing >
\>: closing >
]*:除>和/或直到结束之外的任何内容>
\>:结束>
你没有。不要对HTML使用regex
。使用一个(X)HTML解析器,如BeautifulSoup。如果你想去除HTML标记:BeautifulSoup正是为此目的创建的。关键问题是你的HTML有多复杂。是否有像
或
这样的容器标签应该删除?您没有。不要对HTML使用regex
。使用一个(X)HTML解析器,如BeautifulSoup。如果你想去除HTML标记:BeautifulSoup正是为此目的创建的。关键问题是你的HTML有多复杂。是否有像
或
这样的容器标签应该被删除?我个人也推荐。它很容易使用,速度也很快。使用pyquery如何准确地从html中提取文本?>>从pyquery导入pyquery
>>d=pyquery('Helloworld')
>>d.text()
'Helloworld'
@GuillaumeA很酷,谢谢。我个人推荐。它易于使用且速度极快。如何使用pyquery从html中提取文本?>>>从pyquery导入pyquery
>d=pyquery('Helloworld')
>>d.text()
'Helloworld'
@GuillaumeA Cool,谢谢。