2016-03-29 31 views
1

我開始爲一個小項目使用Scrapy,並且我無法提取鏈接。每次找到該類時,我只會得到「[]」而不是url。我錯過了明顯的東西嗎?從網站Scrapy獲取href出格

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查詢是在這一行,你實際上是我們的迭代的div沒有任何href屬性

錯誤

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

爲了使其正確,您應該在中選擇achor元素:

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