Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 3, 2018 20:02:07

Mayskij
Зарегистрирован: 2018-02-01
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсер не работает..Скрин -"local variable 'pages' referenced before assignment"

Привет. Подскажите, кто знает, почему парсер работал, но вдруг перестал?
вот ошибка:
C:\Users\HP\AppData\Local\Programs\Python\Python36-32\python.exe CUsers/HP/AppData/Local/Programs/Python/Python36-32/ydirect.py
купить куклы лол в москве
Traceback (most recent call last):
pass http://direct.yandex.ru/search?&rid=213&text=купить куклы лол в москве&page=0
File “CUsers/HP/AppData/Local/Programs/Python/Python36-32/ydirect.py”, line 107, in <module>
main()
File “CUsers/HP/AppData/Local/Programs/Python/Python36-32/ydirect.py”, line 50, in main
pages = get_pages(g, url, query)
File “CUsers/HP/AppData/Local/Programs/Python/Python36-32/ydirect.py”, line 22, in get_pages
if pages == ‘\u2026’:
UnboundLocalError: local variable ‘pages’ referenced before assignment

Прикреплённый файлы:
attachment ydirect.py (3,1 KБ)

Офлайн

#2 Фев. 3, 2018 20:50:38

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Парсер не работает..Скрин -"local variable 'pages' referenced before assignment"

очевидно в try выпал ексепшин, в результате переменная pages не была создана, о чем вам и сообщает интерпертатор.

 try:
		pages = g.doc.select('//a[@class="b-pager__page"]')[-1].text()
	except:
		print('pass', fullurl)
     ......
	if pages == '\u2026':
вообще это плохой подход таким образом обрабатывать абсолютно все исключения.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Фев. 3, 2018 20:54:19)

Офлайн

#3 Фев. 3, 2018 23:20:51

Mayskij
Зарегистрирован: 2018-02-01
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсер не работает..Скрин -"local variable 'pages' referenced before assignment"

PEHDOM
очевидно в try выпал ексепшин, в результате переменная pages не была создана, о чем вам и сообщает интерпертатор.
Честно, конечно, не полностью понял, как написать, чтобы except не выпадал.
Попробовал таким способом: Перед try: объявить переменную pages = None
Затем обновите условие до вида:
if pages and pages == ‘\u2026’:

Но теперь int(pages) или int(None) выдает ошибку и не ясно, как решить:
Traceback (most recent call last):
File “CUsers/HP/AppData/Local/Programs/Python/Python36-32/ydirect.py”, line 108, in <module>
main()
File “CUsers/HP/AppData/Local/Programs/Python/Python36-32/ydirect.py”, line 53, in main
for page in tqdm(range(int(pages))):
TypeError: int() argument must be a string, a bytes-like object or a number, not ‘NoneType’


Офлайн

#4 Фев. 3, 2018 23:50:46

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Парсер не работает..Скрин -"local variable 'pages' referenced before assignment"

Mayskij естественно, вы не туда копаете.
исключение у вас возникает при g.doc.select. надо понять почему, может у куяндекса чтото поменялось, и оно теперь вам возвращает ХЗ что.
Запускаете отладчик и смотрите пошагово как ваше pages меняется, или хотябв принты повставляйте чтобы понимать. Уберите подавление исключения чтобы посмотреть на него.




==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Фев. 3, 2018 23:52:43)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version