Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: YutingОтветов: 1

Я пишу сканер, чтобы получить несколько страниц из 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

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

web-scrapingscrapyscrapy-spider

Ответы

Ответ 1 · рейтинг 2 · GHajba

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

from hw1.yelpItem import YelpItem

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы