2015-03-16 2 views
1
<TABLE> 
<br> 

    <TR> 
    <td width = 270><p align="left" style="margin-left: 0;"><b>Info</b></p></td> 
    <td><p> </p></td> 
    </TR> 
    <TR> 
    <td width = 270><p align="left" style="margin-left: 10;">Page&nbsp;Count</p></td> 
    <td><p> = 4 </p></td> 
    </TR> 
    ... 

Попытка получить ответ.xpath для значения = 4 из приведенной выше таблицы. Даже когда вы проверяете элемент в Chrome и потянете xpath таким образом, я дополним значение []. Протестировано:Python Как получить данные Scope Xpath из базовой таблицы?

/html/body/table[1]/tr[2]/td[2] 
//table[2]/tr[2]/td[2] 

оба терпят неудачу.

+0

С ограниченным фрагментом HTML, который вы показали, это impo чтобы понять, почему это не удалось. Почему вы пытались использовать как «[1]», так и «[2]» в качестве позиции элемента таблицы? – LarsH

ответ

2

Я бы получить td по Count текст в вместо этого и затем получить following-sibling:

//td[contains(p, "Count")]/following-sibling::td/p/text() 

Демо:

$ scrapy shell index.html 
In [1]: response.xpath('//td[contains(p, "Count")]/following-sibling::td/p/text()').extract() 
Out[1]: [u' = 4 '] 

И если вы хотите, чтобы извлечь действительное число, используйте .re():

In [2]: response.xpath('//td[contains(p, "Count")]/following-sibling::td/p/text()').re(r'(\d+)') 
Out[2]: [u'4'] 
+0

Работал отлично! – SudoGaron

Смежные вопросы