2015-05-04 150 views
1

我試圖學習如何使用scrapy,並試圖做我認爲是一個簡單的項目。我試圖從單個網頁中提取2個數據 - 不需要爬取其他鏈接。但是,我的代碼似乎返回零結果。我已經測試了Scrapy Shell中的xpath,並且都返回了預期的結果。Scrapy返回零結果

我item.py是:

import scrapy 

class StockItem(scrapy.Item): 
    quote = scrapy.Field() 
    time = scrapy.Field() 

我的蜘蛛,名爲stockscrapy.py是:

import scrapy 

class StockSpider(scrapy.Spider): 
    name = "ugaz" 
    allowed_domains = ["nasdaq.com"] 
    start_urls = ["http://www.nasdaq.com/symbol/ugaz/"] 

def parse(self, response): 
    stock = StockItem() 
    stock['quote'] = response.xpath('//*[@id="qwidget_lastsale"]/text()').extract() 
    stock['time'] = response.xpath('//*[@id="qwidget_markettime"]/text()').extract() 
    return stock 

要運行腳本,我使用命令行:

scrapy crawl ugaz -o stocks.csv 

任何和所有的幫助,不勝感激。

+0

一些網站塊刮。我相信納斯達克就是其中之一,但我並不十分確定。 – reticentroot

+0

嘗試改變'這裏http://stackoverflow.com/questions/18920930/scrapy-python-set-up-user-agent – number5

+0

用戶Agent'到Chrome或Firefox一個下面的指令可以請添加適當的啓動網址,因爲這個開始網址只會給你單個項目產生,因此你不必寫蜘蛛。 – Jithin

回答

1

您需要縮進分析塊。

import scrapy 

class StockSpider(scrapy.Spider): 
    name = "ugaz" 
    allowed_domains = ["nasdaq.com"] 
    start_urls = ["http://www.nasdaq.com/symbol/ugaz/"] 

    # Indent this block 
    def parse(self, response): 
     stock = StockItem() 
     stock['quote'] = response.xpath('//*[@id="qwidget_lastsale"]/text()').extract() 
     stock['time'] = response.xpath('//*[@id="qwidget_markettime"]/text()').extract() 
     return stock 
+0

謝謝你,弗蘭克!我是Python新手,並沒有意識到正確縮進的重要性。 – DrJP