擅长:python、mysql、java
<p>lxml</strong>库通常也很有用,因为它可以使用xpath</strong>表达式识别HTML结构,这样可以生成更紧凑的代码。在</p>
<p>在本例中,xpath表达式<code>//td[@title]</code>请求所有<code>td</code>元素,但坚持<code>title</code>属性存在。在for循环中,您可以看到不需要检查属性是否存在,因为这已经完成了。在</p>
<pre><code>>>> from io import StringIO
>>> HTML = StringIO('''\
... <td title="title 1" role="gridcell"><a onclick="open" href="#">TEXT</a></td>
... <td role="gridcell"><a onclick="open" href="#">TEXT</a></td>
... <td title="title 2" role="gridcell"><a onclick="open" href="#">TEXT</a></td>
... <td title="title 3" role="gridcell"><a onclick="open" href="#">TEXT</a></td>''')
>>> parser = etree.HTMLParser()
>>> tree = etree.parse(HTML, parser)
>>> tds = tree.findall('//td[@title]')
>>> tds
[<Element td at 0x7a0888>, <Element td at 0x7a0d08>, <Element td at 0x7ae588>]
>>> for item in tree.findall('//td[@title]'):
... item.attrib['title']
...
'title 1'
'title 2'
'title 3'
</code></pre>