如何从一个div提取文本?

时间:2018-08-07 15:14:41

标签: python selenium xpath scrapy

有人可以帮我解决这个问题吗? 我有一个这样的段落:

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()

它只返回空:

[]

有人可以告诉我原因吗?我该如何解决这个问题?

2 个答案:

答案 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