使用 xpath 抓取网页,返回结果文本
Scraping a web page, using xpath, returning text for the result
我正在 Python 中使用 lxml 抓取网页,并试图获取名为 (Table3) 的 Table 下的文本。在此 table 下,正如您在下面的代码中看到的,每个 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>]
修改您的 xpath 以调用 text()
。
tree.xpath('//table[@class = "Table3"]//td[1]/text()')
我正在 Python 中使用 lxml 抓取网页,并试图获取名为 (Table3) 的 Table 下的文本。在此 table 下,正如您在下面的代码中看到的,每个 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>]
修改您的 xpath 以调用 text()
。
tree.xpath('//table[@class = "Table3"]//td[1]/text()')