2013-10-16 25 views
3

我不能做到以下幾點:從scrapy.selector進口選擇錯誤

from scrapy.selector import Selector 

的錯誤是:

文件 「/Desktop/KSL/KSL/spiders/spider.py」,行1,in from scrapy.selector import選擇器 ImportError:無法導入名稱選擇器

就好像LXML沒有安裝在我的機器上,但它是。另外,我認爲這是scrapy內置的默認模塊。也許不會?

想法?

+2

'從scrapy.selector進口Selector'對應於新的統一選擇API。如果您遵循http://doc.scrapy.org/en/latest/topics/selectors.html#constructing-selectors(版本0.19),則需要從源代碼安裝Scrapy。 Scrapy 0.19尚未發佈PyPI上正式 –

回答

10

嘗試導入HtmlXPathSelector代替。

from scrapy.selector import HtmlXPathSelector 

然後使用。選擇()方法來解析出你的HTML。例如,

sel = HtmlXPathSelector(response) 
    site_names = sel.select('//ul/li') 

如果你正在跟蹤的Scrapy網站(http://doc.scrapy.org/en/latest/intro/tutorial.html)的教程,更新的例子是這樣的:

from scrapy.spider import BaseSpider 
    from scrapy.selector import HtmlXPathSelector 

    class DmozSpider(BaseSpider): 
     name = "dmoz" 
     allowed_domains = ["dmoz.org"] 
     start_urls = [ 
      "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/", 
      "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/" 
     ] 

     def parse(self, response): 
      sel = HtmlXPathSelector(response) 
      sites = sel.select('//ul/li') 

      for site in sites: 
       title = site.select('a/text()').extract() 
       link = site.select('a/@href').extract() 
       desc = site.select('text()').extract() 
       print title, link, desc 

希望這有助於!

+0

對於Scrapy 0.18教程,請參閱http://doc.scrapy.org/en/0.18/intro/tutorial.html – dangra

+1

這工作,但你在分析的定義缺少一個冒號()。我會編輯它,但stackoverflow有奇怪的6個字符最低編輯... – chrishiestand

+0

好的趕上!固定。 – user256604

1

我遇到同樣的問題。我認爲你的scrapy版本有問題。

您可以鍵入scrapy version -v進入cmd以檢查版本。據我所知,最新版本是0.24.4(2014.10.23)。你可以訪問http://scrapy.org/找到最新的。

0

本來這是由於我安裝scrapy(我的操作系統是Ubuntu的)方式相同的問題。我通過

sudo apt-get install python-scrapy 

從python代替安裝它。如果您使用Anaconda只是做

conda install -c scrapinghub scrapy 

如果沒有,那麼

pip install Scrapy 

http://doc.scrapy.org/en/latest/intro/install.html