有人可以帮我解决这个问题吗? 我有一个这样的段落:
row.exact()
u'<tr bgcolor="#f5f9fc">\n\t\t\t<td valign="top" style="text-align:left;"><a href="/search/sites/ABB1836.asp">ABB</a></td>\n\t\t\t<td nowrap valign="top">+1 713 243 7160</td>\n\t\t\t<td valign="top" style="text-align:left;"><a href="http://www.abb.com" target="_blank">www.abb.com</a></td>\t\t\n\t\t</tr>'
我需要获取公司名称,电话和网站。我正在尝试以下代码:
row.xpath(".//td[1]").extract()
没关系,我们可以在下面获得此信息:
[u'<td valign="top" style="text-align:left;"><a href="/search/sites/ABB1836.asp">ABB</a></td>']
它仍然不是我想要的文本,但是当我尝试添加代码text()时,我什么也没得到。
row.xpath(".//td[1]/text()").extract()
它只返回空:
[]
有人可以告诉我原因吗?我该如何解决这个问题?
答案 0 :(得分:1)
公司名称,电话和网络这三个字段,即文本 ABB , +1 713 243 7160 和 www .abb.com 位于三个不同的父<a>
节点的三个不同的子<td>
节点内。要提取文本,可以使用以下解决方案:
ABB
:
row.xpath(".//td[1]/a/text()").extract()
+1 713 243 7160
:
row.xpath(".//td[2]/a/text()").extract()
www.abb.com
:
row.xpath(".//td[3]/a/text()").extract()
答案 1 :(得分:0)
尝试
//tr/td[1]/a/text() // for Company Name
//tr/td[2]/text() // Telephone
//tr/td[3]/a/text() // Website