Python 从标记之间提取文本的有效方法
假设我有这样的东西:Python 从标记之间提取文本的有效方法,python,regex,extract,Python,Regex,Extract,假设我有这样的东西: var = '<li> <a href="/...html">Energy</a> <ul> <li> <a href="/...html">Coal</a> </li> <li> <a href="/...html">Oil </a> </li> <li> <a h
var = '<li> <a href="/...html">Energy</a>
<ul>
<li> <a href="/...html">Coal</a> </li>
<li> <a href="/...html">Oil </a> </li>
<li> <a href="/...html">Carbon</a> </li>
<li> <a href="/...html">Oxygen</a> </li'
re.findall('(?<=>)([^<]+)(?=</a>[^<]*</li)', var, re.S)
var='
- 从标记语言中提取信息的推荐方法是使用解析器,例如,这是一个不错的选择。对于这一点,它不是适合这项工作的工具 如果您想使用正则表达式(有些人认为这是解析HTML/XML的罪过),可以尝试以下方法:
var = '<li> <a href="/...html">Energy</a>
<ul>
<li> <a href="/...html">Coal</a> </li>
<li> <a href="/...html">Oil </a> </li>
<li> <a href="/...html">Carbon</a> </li>
<li> <a href="/...html">Oxygen</a> </li'
re.findall('(?<=>)([^<]+)(?=</a>[^<]*</li)', var, re.S)
re.findall('(?)([^如果您只是在解析标记内部的内容之后,请尝试使用xpath,例如
for text in var.xpath_all(".//ul/li"):
text = li.xpath('.//a/text()')
print text
您还可以使用urllib、BeautifulSoup等。您可以使用它,它非常适合此类任务。它非常简单,易于安装,并且有大量文档
您的示例中有一些未关闭的li标记。我已经进行了更正,这是获取所有li标记的方法
from bs4 import BeautifulSoup
var = '''<li> <a href="/...html">Energy</a></li>
<ul>
<li><a href="/...html">Coal</a></li>
<li><a href="/...html">Oil </a></li>
<li><a href="/...html">Carbon</a></li>
<li><a href="/...html">Oxygen</a></li>'''
soup = BeautifulSoup(var)
for a in soup.find_all('a'):
print a.string
从bs4导入美化组
var='''
''
汤=美汤(var)
对于汤中的a。查找所有('a'):
打印字符串
它将打印:
能量
辅酶A
油
碳
氧气
有关文档和更多示例,请参见BeautifulSoup这不是故意使用的正确html吗?最后一个li
标记没有关闭,您忘记了第一个标记中的关闭标记,并且像这样没有关闭ul
标记…这是故意的吗?两个“最佳”和“最有效”都是非常模糊的术语…因此可能在行中属于,var.findall(text=True)
?