Элемент Scrapy не определен

Я пишу сканер, чтобы получить несколько страниц из Yelp. Я определяю элемент Yelp следующим образом:

yelpItem.py:

import scrapy

class YelpItem(scrapy.Item):
    # define the fields for your item here like:
    name = scrapy.Field()
    link = scrapy.Field()

а в папке паука я использую YelpItem в функции parse.

def parse(self, response):
    hxs = HtmlXPathSelector(response)
    sites = hxs.select('//h3/span/a[contains(@class, "biz-name")]')
    items = []
    for site in sites:
        item = YelpItem()

При запуске пишет:

NameError: global name 'YelpItem' is not defined

Я просмотрел несколько веб-страниц и попытался добавить такие коды, как:

from hw1.items import YelpItem

(hw1 — это название моего проекта), но это не помогает. Это приведет к ошибке, например: No module named items

Может ли кто-нибудь помочь мне понять, как с этим бороться? Спасибо!


person Yuting    schedule 02.09.2015    source источник


Ответы (1)


Использовать

from hw1.yelpItem import YelpItem

Поскольку, когда вы пытаетесь from hw1.items, вы ссылаетесь на файл items.py, но ваш YelpItem находится в файле yelpItem.py, вам также необходимо обновить путь импорта.

Вы можете прочитать о том, почему это так, здесь.

person GHajba    schedule 03.09.2015
comment
Большое спасибо! Хотя я решил это, изменив имя файла элемента на items.py. - person Yuting; 03.09.2015