Форум сайта python.su
0
terabayt
посмотрите код что возвр сервер с помощью urllib или чего-то подобного
>>> x = urllib.request.urlopen("http://technopoint.ru/catalog/defect") >>> print(x.read())
Офлайн
0
Все чуваки, разобрался, дело было в кукисах.
Если удалить их, то по ссылке уценки (http://technopoint.ru/catalog/defect), даже ничего не грузится. Потом если зайти на главную страничку (http://technopoint.ru), отсылаются куки и после этого уже можно загружать уценку.
Короче я просто нафигачил все куки с сайта и все сработало:
>>> g.setup(cookies={'_ga':'GA1.2.1032735933.1439625163','_gat':'1','YII_CSRF_TOKEN':'1bf250e0e175cab31fc99ab676475c252713f45a','__CITY__':'5','_ym_visorc_22425643':'w','city_id':'cd4f69249bbb7ab7c590556d5a4fd8de4e096ebfs%3A1%3A%225%22%3B','showcase_category_id':'2261','tp_session':'k1d7b8cvj8ir8oq75o47a8m805'}) >>> g.go('http://technopoint.ru/catalog/defect') <grab.document.Document object at 0x00000000038E3048> >>> for i in g.doc.select('//fieldset/legend/a/text()').selector_list: print(i.text()) Настольные ПК Моноблоки Мониторы Цифровые фоторамки Смартфоны Автосабвуферы Резаки Микроволновые печи Все 9 товаров Пылесосы Все 8 товаров Мультиварки Все 13 товаров Утюги Все 6 товаров Фены Швейные машины Чайники электрические Все 42 товара Стиральные машины Плиты электрические Усилители Посудомоечные машины Вытяжки Водонагреватели электрические Все 8 товаров Йогуртницы Грили Вентиляторы Все 14 товаров Кофемашины Электрощипцы Мойки высокого давления Шуруповерты Конвекторы Обогреватели Тепловентиляторы Колонки 2.0 Звуковые карты Блендеры Соковыжималки Миксеры Кофеварки Термопоты Брошюровщики Уничтожители бумаг Ламинаторы Безопасность компьютера Чехлы для планшетов Чехлы для смартфонов Компактные электропечи Угловые шлифовальные машины Холодильники встраиваемые Осушители воздуха Электрические духовые шкафы Плитки электрические Увлажнители воздуха Пароочистители Сковороды Кастрюли Пылесосы-роботы Шашлычницы электрические Измельчители Дрели безударные Маршрутизаторы Часы настенные Сварочные аппараты Автомобильные аккумуляторы Вафельницы электрические Столы для ТВ и Hi-FI техники Паровые швабры Маникюрные наборы Снегоуборщики Отпариватели Электрические варочные поверхности Холодильники полноразмерные Газовые тепловые пушки Нивелиры лазерные Гарнитуры беспроводные Сэндвичницы Светильники декоративные Сапоги Сушилки для белья Аксессуары к блендерам Наушники с микрофоном Стиральные машины Утюги Все 6 товаров Швейные машины Пароочистители Отпариватели Сушилки для белья Гарнитуры беспроводные Колонки 2.0 Наушники с микрофоном Инфракрасные обогреватели Мойки высокого давления
Офлайн
0
Появился дополнительный вопрос. Допустим, если я не хочу куки сам загружать, то я могу их получить с сервера с главной страницы ведь?
Для этого ставлю, чтобы полученные куки отправлялись в следующие запросы. Делаю это таким образом, но не получается:
>>> g.setup(reuse_cookies = True) >>> g.go('http://technopoint.ru/') <grab.document.Document object at 0x00000000037F3908> >>> g.go('http://technopoint.ru/catalog/defect') <grab.document.Document object at 0x00000000037F34A8> >>> g.doc.tree.xpath('//fieldset/legend/a/text()') ['Шашлычницы электрические', 'Холодильники полноразмерные']
Офлайн
0
Что-то меня уже выбешивает эта библиотека. Хз как на ней что-то сделать.
Документация не разъясняет вообще.
Например, если я ставлю
g.setup(post = {'id':'5', 'YII_CSRF_TOKEN':g.cookies.__getitem__('YII_CSRF_TOKEN')})
Офлайн
857
bayahПоставь Wireshark
Это значит, что на каждый в дальнейшем запрос g.go('Какой-то адресс') будет совершаться post запрос?
Или только на первый?
А как узнать что будет слаться?
Офлайн
>>> g.setup(reuse_cookies = True)Это лишнее. Опция `reuse_cookies` по-умолчанию в True выставлена.
Что-то меня уже выбешивает эта библиотека.Посмотрите python-requests библиотеку, там документация подробнее, чем в Grab. Она больше подходит для тех, кто не умеет пользоваться снифером и читать исходный код библиотеки, которую он использует.
Это значит, что на каждый в дальнейшем запрос g.go('Какой-то адресс') будет совершаться post запрос?Только в первый.
Или только на первый?
А как узнать что будет слаться?
Если использовать g.request_method, то он возвращает вообще GET, тогда как в документации написано, установка через g.setup параметра post сразу устанавливает метод запроса POST.Зачем вы используете `request_method`? Разве он описан в документации? Это не метод, а аттрибут, кстати.
Или то что возвращает g.request_method не имеет отношения к тому какой запрос будет делаться. Тогда что это?
Офлайн