2015-04-06 166 views
2

我試圖刮格式化的HTML看到here。 但我的代碼只返回1價格而不是全部10個價格。Scrapy只返回第一個結果

代碼在這裏看到:

class MySpider(BaseSpider): 
    name = "working1" 
    allowed_domains = ["steamcommunity.com"] 
    start_urls = ["http://steamcommunity.com/market/search/render/?query=&appid=440"] 

    def parse(self, response): 
     sel = Selector(response) 
     price = sel.xpath("//text()[contains(.,'$')]").extract()[0].replace('\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t','') 
     print price 

我超級新scrapy/XPath的,所以我真的不知道爲什麼它不打印價格的每一個實例。

有什麼建議嗎?謝謝!

+0

爲什麼是的'[0]'在那裏,如果你希望所有的元素? –

回答

3

您正在獲取xpath匹配的第一個結果。相反,遍歷所有的人:

for price in sel.xpath("//text()[contains(., '$')]").extract(): 
    print price.strip(r"\r\n\t") 

打印(也有$0.03多次出現):

$0.03 
$0.03 
$0.03 
$0.03 
$0.03 
$0.03 
$0.03 
$0.03 
$0.03 
$0.03 
+0

太棒了!如果我想返回而不是打印呢?再次感謝! – 5Y3WS

+0

@ 5Y3WS這是當你需要用'Field'創建一個'Item'類並且從'parse()'方法返回那個'Item'的實例的時候。 – alecxe