2013-09-21 4 views
1

Все еще немного для Scrapy и Python, поэтому надеемся на некоторое руководство. Прямо сейчас я пытаюсь решить это, используя lxml по умолчанию, но я слышал, что BeautifulSoup тоже хорош. Откройте, чтобы попробовать другие селекторы, если они сделают это проще.Разбор смежных предметов в Scrapy

Я пытаюсь очистить объект html, который имеет некоторые довольно плохие структуры. Детали объекта не вложены в ту же структуру, что и имя (без div или ничего). Я не знаю, как извлечь узел, а затем извлечь детали из соседнего узла (а не от вложенных элементов)

Его в настоящее время определяется, как это:

<!--first item--> 
<h2 class="name"> 
    <a href="link">Name goes here</a> 
</h2> 
<table> 
<tbody> 
    <tr> 
     <th>ID</th> 
     <td><a href="link">123456</a></td> 
    </tr> 
    <tr> 
     <th>Description</th> 
     <td>More details here</td> 
    </tr> 
    <tr> 
     <th>Date</th> 
     <td>1/1/13</td> 
    </tr> 
</tbody> 
</table> 
<!-- end first item --> 

<hr> 

<!--second item--> 
<h2 class="name"> 
    <a href="link">Name goes here</a> 
</h2> 
<table> 
<tbody> 
    <tr> 
     <th>ID</th> 
     <td><a href="link">123456</a></td> 
.... 

Обратите внимание, как идентификатор , описание и дата не вложены в тот же div, что и имя. Также, что второй элемент находится рядом с именем 1-го элемента и деталями.

Любая помощь по этому поводу.

ответ

2

Вы хотите following-sibling. Как и в случае:

hxs.select("//th[text()='ID']/following-sibling::td[1]/a/@href") 
+0

Спасибо за кучу :) – Ratsock

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