来自scrapy.selector导入选择器错误

时间:2013-10-16 22:29:03

标签: python macos web-scraping scrapy lxml

我无法执行以下操作:

from scrapy.selector import Selector

错误是:

文件“/Desktop/KSL/KSL/spiders/spider.py”,第1行,在     来自scrapy.selector import Selector ImportError:无法导入名称选择器

就好像我的机器上没有安装LXML,但它确实如此。另外,我认为这是scrapy内置的默认模块。也许不是吗?

思想?

3 个答案:

答案 0 :(得分:10)

尝试导入 HtmlXPathSelector

    from scrapy.selector import HtmlXPathSelector

然后使用 .select()方法解析你的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

希望这有帮助!

答案 1 :(得分:1)

我遇到同样的问题。我认为你的scrapy版本有问题。

您可以在cmd中键入scrapy version -v来检查版本。据我所知,最新版本是0.24.4(2014.10.23)。您可以访问http://scrapy.org/以找到最新的。

答案 2 :(得分: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