我正在尝试使用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
换句话说,我希望得到&lt;&gt;和&lt;&gt;之间的所有内容。 我正在尝试编写一个python函数,将html代码作为字符串,然后从那里提取信息。我被困在string.split('&lt;')。
答案 0 :(得分:3)
您应该使用正确的HTML解析库,例如HTMLParser模块。
答案 1 :(得分:1)
string = '<a href="#tips">Visit the Useful Tips Section</a>'
re.findall('<[^>]*>(.*)<[^>]*>', string) //return 'Visit the Useful Tips Section'
答案 2 :(得分:1)
您可以使用lxml
html解析器。
>>> 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
>>>
答案 3 :(得分:0)
我知道您正在尝试删除HTML标记并仅保留文本。
您可以定义表示标记的正则表达式。 然后用空字符串替换所有匹配。
示例:
def remove_html_tags(data):
p = re.compile(r'<.*?>')
return p.sub('', data)
参考文献:
答案 4 :(得分:0)
我会使用BeautifulSoup - 对于形成错误的html,它变得不那么暴躁了。