2017-01-29 8 views
0

У меня есть файл с именем: scrape.py Этот файл содержит следующий класс:вызов класса python3 методами

Im пытается вызвать мой класс BrickSetSpider, с его методами, и в конечном итоге вернуть значение parse_page_urls при выполнении этого программа, подобная python scrape.py.

Однако, когда я бегу python scrape.py, я получаю:

NameError: name 'response' is not defined

на этой линии:

page = spider.parse_se_page_url(response) 

Может кто-то помочь мне запустить мои два метода (вывода результата g_result_list

?

Огромное спасибо!

+0

Вы можете указать проблему? После вашего обновления? Это также поможет, если вы отправляете код обоих классов –

+0

Существует только '1 класс' с двумя методами:' parse_page_url' и 'parse_page_urls' – Jshee

+0

Я обновил свою проблему, когда я запускаю текущий код выше @GiladGreen – Jshee

ответ

2

Несколько раз:

  • Причины вы получите ошибку NameError: name 'response' is not defined в том, что нет, где в рамках основных вы определили любой переменную response Вы не можете использовать его без определения такого параметра.
  • Кроме того в parse_se_page_urls у вас есть дополнительные линии

    def parse_se_page_urls(self, g_result_page): 
    

    без реализации функции. также должно быть проблематичным.

  • Если отсутствует какая-либо вещь, которой нет в отправленном коде, в вашей второй функции вы используете переменную g_result_page - но точно так же, как и с ответом, она не определена. У вас есть параметр с тем же именем в приведенной выше функции, но это локальная переменная этой функции и, таким образом, неизвестна второй. Для того, чтобы инициализировать их как члены экземпляра добавить конструктор следующим образом:

    def __init__(self): 
        self.g_result_list = [] 
        self.g_result_page = [] 
    

    , а затем для использования записи self.g_result_page

  • В вашей первой функции у вас есть две следующие строки:

    set(g_result_page) 
    list(g_result_page) 
    

    Эти строки не влияют - они создают set и list из g_result_page, но эти структуры данных не привязаны ни к чему и поэтому очищаются в конце функции ион

+0

Все это в тот же 'класс', только с методом 2 метода' метод' метод 2 – Jshee

+0

@Giliad - не из класса 'BrickSetSpider()' при определении определения inital? – Jshee

+0

@Jshee - см. Последнее обновление :) –

0

В коде есть две незначительные ошибки.

Во-первых, когда вы получите экземпляр класса, вам не нужно проходить в чем-либо, так что ваш код становится

spider = BrickSetSpider() 

Во-вторых, можно использовать переменную page для хранения выходной spider.parse_page_url(response) по делая page = spider.parse_page_url(response), но затем вы звоните urls = page.parse_page_urls(result_page). Я полагаю, что вы хотели сделать, это позвонить urls = spider.parse_page_urls(page).

Надеюсь, это поможет.

+0

Вы говорите, что я должен хранить 'page' var, но удалять' url' var, а вместо этого просто использовать его содержимое 'page.parse_page_urls (page'? – Jshee

+0

Я обновил свой ответ на уточнить. – BluCode

+0

К сожалению, в строке 'page' var, я получаю эту ошибку, когда запускаю' python scrape.py': 'NameError: name 'response' не определен' – Jshee