1

我正在尝试使用 python 从 html 代码中提取某些信息。例如:

<a href="#tips">Visit the Useful Tips Section</a> 
and I would like to get result : Visit the Useful Tips Section

<div id="menu" style="background-color:#FFD700;height:200px;width:100px;float:left;">
<b>Menu</b><br />
HTML<br />
CSS<br />
and I would like to get Menu HTML CSS

换句话说,我希望得到 <> 和 <> 之间的所有内容,我正在尝试编写一个 python 函数,将 html 代码作为字符串,然后从那里提取信息。我被困在 string.split('<') 上。

4

5 回答 5

3

您应该使用适当的 HTML 解析库,例如HTMLParser模块。

于 2012-06-01T13:24:03.433 回答
1

您可以使用lxmlhtml 解析器。

>>> import lxml.html as lh
>>> st = ''' load your above html content into a string '''
>>> d = lh.fromstring(st)
>>> d.text_content()

'Visit the Useful Tips Section \nand I would like to get result : Visit the Useful Tips Section\n\n\nMenu\nHTML\nCSS\nand I would
like to get Menu HTML CSS\n'

或者你可以做

>>> for content in d.text_content().split("\n"):
...     if content:
...             print content
...
Visit the Useful Tips Section
and I would like to get result : Visit the Useful Tips Section
Menu
HTML
CSS
and I would like to get Menu HTML CSS
>>>
于 2012-06-01T13:32:55.990 回答
1
string = '<a href="#tips">Visit the Useful Tips Section</a>'
re.findall('<[^>]*>(.*)<[^>]*>', string) //return 'Visit the Useful Tips Section'
于 2012-06-01T13:26:25.407 回答
0

我了解您正在尝试去除 HTML 标签并仅保留文本。

您可以定义一个表示标签的正则表达式。然后用空字符串替换所有匹配项。

例子:

def remove_html_tags(data):
    p = re.compile(r'<.*?>')
    return p.sub('', data)

参考:

例子

关于 python 正则表达式的文档

于 2012-06-01T13:29:12.207 回答
0

我会使用BeautifulSoup - 对于格式错误的 html,它会变得不那么暴躁。

于 2012-06-01T13:44:20.200 回答