Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 12, 2011 12:34:53

UsCr
От:
Зарегистрирован: 2009-11-04
Сообщения: 216
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг сайта для чайников.

Здравствуйте. Что есть для сабжа? Есть автоматические модули?

А вот конкретный вопрос:
есть сайт со списком оборудования, конфигурацией и прочими прелестями. В адресной строке после логина на сайт отображается такой адрес: bla-bla/cgi_bin/pCComp.exe
На самом сайте есть ссылки. После клика по ссылке, открывается другая страничка с другими ссылками. Но в адреснойстроке по прежнему bla-bla/cgi_bin/pCComp.exe, веб-консоль показывает вот что: POST http://portal.arbyte.ru/cgi_bin/pCComp.exe

Внутри странички есть такого вида ссылки: a href=“/cgi_bin/pCComp.exe” onclick=“AdapterForm2.__act.value='ColId.1.2__id.35.wDm.DataSetAdapter2.GetNameActionCL__sp.13.PlatCompsPage__fp.13.PlatCompsPage';AdapterForm2.submit();return false;”

Как со всем этим быть?

Прошу обьяснять наиболее “детским” языком. Я впервые сталкиваюсь с парсингом сайта, а тут сразу такая вот загогулина.


UPD

Я догадался wireshark'ом посмотреть готовый POST. Вот он: __act=NextPage.9.LoginPage__id.33.LoginPage.LoginFormAdapter1.Login__sp.9.LoginPage__fp.9.LoginPage&UserName=username&Password=password&NextPage=ProductsPage

Теперь делаю так:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import urllib2


params = "__act=NextPage.9.LoginPage__id.33.LoginPage.\
LoginFormAdapter1.Login__sp.9.LoginPage__fp\
.9.LoginPage&UserName=name&Password=password&NextPage=ProductsPage"

req = urllib2.Request('http://79.143.70.100:80/cgi_bin/pCComp.exe', params)
f = urllib2.urlopen(req)


print req
for i in f:
print i
Получаю ответ:
<urllib2.Request instance at 0xb786692c>
<html><body><h1>Internal Application Error</h1>

<p>'Login__sp' is not a valid integer value

<p><hr width="100%"><i></i></body></html>
Что не так?

И в догонку: как получить и использовать потом куку?



Отредактировано (Апрель 12, 2011 14:45:58)

Офлайн

#2 Апрель 12, 2011 17:38:49

agalen
От:
Зарегистрирован: 2011-03-23
Сообщения: 185
Репутация: +  17  -
Профиль   Отправить e-mail  

Парсинг сайта для чайников.

Похоже, тебе придется самому разбирать поля onlick=… и формировать данные для POST-запросов.

По поводу ошибки - может просто требуется соблюдать определенный порядок вызова?
И еще попробуй заменить LoginFormAdapter1 на LoginFormAdapter.1 (там чередование слов и цифр нарушено).

Чтобы использовать куки надо в urillib2 создать свой opener, чтобы тот включал HTTPCookieProcessor



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version