Элемент 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)


arrow_upward
2
arrow_downward

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

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