使用xpath刮取网页,返回结果文本

时间:2015-10-16 18:49:53

标签: python html xpath text lxml

我正在使用Python中的lxml抓取一个网页,并尝试获取名为Table Table(Table3)的文本。在此表下,您可以在下面的代码中看到tr的数量,然后是每个tr下的4个td。

我想要的是在列表中的所有tr下打印td1的文本。

这是HTML代码:

<table width="100%" cellspacing="1" cellpadding="0" border="0" class="Table3">
<TBODY>
<TR>
<Th  class="calibri-12" align="center">Symbol</Th>
<Th  class="calibri-12" align="center">CompanyName</Th>                     
<Th  class="calibri-12" align="center">Short Name</Th>
<Th  class="calibri-12" align="center">ISIN Code</Th>
</TR>
<TR>
<TD  >1330</TD>
<TD  >ALKHODARI</TD>    
<TD  >SA12L0O0KP12</TD> 
</TR>               
<TR>
<TD  >4001</TD>
<TD  >A.Othaim Market</TD>  
<TD  >SA1230K1UGH7</TD>         
</TR>       
<TR>
<TD  >1820</TD>
<TD  >Al Hokair Group</TD>  
<TD  >SA13IG50SE12</TD>
</TR>

以及我在这里使用的代码:

from lxml import html
import requests

page = requests.get('http://www.example.com')
tree = html.fromstring(page.content)
code_test = tree.xpath('//table[@class = "Table3"]//td[1]')
print code_test

结果是这样的:

<Element td at 0x7f4e7bbf5b50>, <Element td at 0x7f4e7bbf5ba8>, <Element td at 0x7f4e7bbf5c00>, <Element td at 0x7f4e7bbf5c58>, <Element td at 0x7f4e7bbf5cb0>, <Element td at 0x7f4e7bbf5d08>, <Element td at 0x7f4e7bbf5d60>, <Element td at 0x7f4e7bbf5db8>, <Element td at 0x7f4e7bbf5e10>, <Element td at 0x7f4e7bbf5e68>, <Element td at 0x7f4e7bbf5ec0>, <Element td at 0x7f4e7bbf5f18>, <Element td at 0x7f4e7bbf5f70>, <Element td at 0x7f4e7bbf5fc8>, <Element td at 0x7f4e7bbf6050>, <Element td at 0x7f4e7bbf60a8>, <Element td at 0x7f4e7bbf6100>, <Element td at 0x7f4e7bbf6158>, <Element td at 0x7f4e7bbf61b0>, <Element td at 0x7f4e7bbf6208>]

1 个答案:

答案 0 :(得分:1)

修改您的xpath以致电text()

tree.xpath('//table[@class = "Table3"]//td[1]/text()')