2016-03-29 3 views
1

Я начал использовать Scrapy для небольшого проекта, и мне не удалось извлечь ссылку. Вместо url я получаю только «[]» за каждый раз, когда класс найден. Мне что-то не хватает?Scrapy get href из div

sel = Selector(response) 
for entry in sel.xpath("//div[@class='recipe-description']"): 
    print entry.xpath('href').extract() 

образца с сайта:

<div class="recipe-description"> 
    <a href="http://www.url.com/"> 
     <h2 class="rows-2"><span>SomeText</span></h2> 
    </a> 
</div> 
+0

Я думаю, что ваш запрос XPath является неправильным. Вы должны выбрать ссылку, а затем получить атрибут href. Что-то вроде этого: // a [@href] – narko

ответ

5

ваш запрос XPath неправильно

for entry in sel.xpath("//div[@class='recipe-description']"): 

в этой линии вы на самом деле наши дивы повторяется для, который не имеет каких-либо Href атрибут

для правильного выбора вы должны выбрать achor элементов в div:

for entry in sel.xpath("//div[@class='recipe-description']/a"): 
    print entry.xpath('href').extract() 

наилучшим решением является извлечение href атрибут в for цикле непосредственно

for href in sel.xpath("//div[@class='recipe-description']/a/@href").extract(): 
    print href 

для простоты вы можете также использовать CSS селекторы

for href in sel.css("div.recipe-description a::attr(href)").extract(): 
    print href 
+0

Спасибо большое, это сработало. Кажется, я неправильно понял идею xpath. – Trollbrot

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