我正在尝试使用scrapy抓取网站并将已删除的数据存储到项目类的变量中

时间:2014-02-04 11:22:23

标签: python-2.7 import scrapy nameerror

我有一个蜘蛛文件dmoz_spider.py,它的内容是:

    from scrapy.spider import Spider
    from scrapy.selector import Selector
    from dmoz.items import DmozItem


    class DmozSpider(Spider):
       name = "dmoz"
       allowed_domains = ["m.timesofindia.com"]
       start_urls = ["http://m.timesofindia.com/india/Congress-BJP-spar-over-Gujarat-govts-Rs-11-per-day-poverty-line/articleshow/29830237.cms"]

       def parse(self, response):
            sel = Selector(response)
                torrent = DmozItem()
                filename = response.url.split("/")[-2]+"1.txt"
            torrent['link']  = response.url
            torrent['title']  = sel.xpath("//h1/text()").extract() 
                open(filename, 'wb').write(torrent['link'])

第二个文件是items.py

   from scrapy.item import Item, Field

     class DmozItem(Item):
        title = Field()
        link = Field()
        desc = Field()

当我运行我的抓取工具时,我在命令行上遇到以下错误...

  

ImportError:没有名为dmoz.items的模块

当我从我的蜘蛛文件中删除import语句时,它给了我错误的说法

  

exceptions.NameError:未定义全局名称'DmozItem'

2 个答案:

答案 0 :(得分:7)

在我的问题中发现问题并将其发布,以便如果任何人最终遇到类似的问题,他就可以得到答案。

在我的代码中我正在做这个

 from dmoz.items import DmozItem

它应该是

 from tutorial.items import DmozItem or

 from tutorial.items import *

因为我的项目目录或包名是教程 那是我之前做的错误。

答案 1 :(得分:0)

我在写

item[title] = sel.xpath('a/text()').extract()

而不是

item['title'] = sel.xpath('a/text()').extract()