如何使用python lxml获取html元素

Dam*_*ano 4 python xml lxml

我有这个HTML代码:

<table>
 <tr>
  <td class="test"><b><a href="">aaa</a></b></td>
  <td class="test">bbb</td>
  <td class="test">ccc</td>
  <td class="test"><small>ddd</small></td>
 </tr>
 <tr>
  <td class="test"><b><a href="">eee</a></b></td>
  <td class="test">fff</td>
  <td class="test">ggg</td>
  <td class="test"><small>hhh</small></td>
 </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

我使用这个Python代码来解压缩所有<td class="test">lxml模块.

import urllib2
import lxml.html

code   = urllib.urlopen("http://www.example.com/page.html").read()
html   = lxml.html.fromstring(code)
result = html.xpath('//td[@class="test"][position() = 1 or position() = 4]')
Run Code Online (Sandbox Code Playgroud)

它很好用!结果是:

<td class="test"><b><a href="">aaa</a></b></td>
<td class="test"><small>ddd</small></td>


<td class="test"><b><a href="">eee</a></b></td>
<td class="test"><small>hhh</small></td>
Run Code Online (Sandbox Code Playgroud)

(所以每个的第一列和第四列<tr>)现在,我必须提取:

aaa(链接的标题)

ddd(<small>标签之间的文字)

eee(链接的标题)

hhh(<small>标签之间的文字)

我怎样才能提取这些值?

(问题是我必须删除<b>标签并在第一列上获取锚的标题并删除第四列<small>上的标签)

谢谢!

Ian*_*ing 8

如果你这样做,el.text_content()你将从每个元素中删除所有标记内容,即:

result = [el.text_content() for el in result]
Run Code Online (Sandbox Code Playgroud)