Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 15, 2013 12:54:01

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

Заполнение форм mechanize, twill, grab.

Добрый день.
Несколько дней решаю проблему автоматического заполнения форм на сайте с паследующей отправкой, голова не варит более, все ссылки гугла проштудировал так и не смог решить. Необходимо занести более 500 объектов через сайт при этом работаю через прокси, так же прокси на сайте с которым работаю.
Необходимо сделать через питон 2.7. Mechanize не работает с jsp, twill вынес мозг с выходом через прокси если он вообще выходит через него, grab "разобрался" как парсить, но не заполнять. Есть ли универсальный инструмент для заполнения jsp страницы автоматически + работой с прокси + для полного набора считывание вводимой информации через exel? Либо савокупность инструментов?
Зы Занести напрямую в базу владелец базы редиска возможности нет, поэтому только через сайт.
Зыы Если спрашиваю элементарные вещи прошу понять и простить

Отредактировано noob_saibot (Сен. 15, 2013 12:57:42)

Офлайн

#2 Сен. 15, 2013 13:31:59

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Заполнение форм mechanize, twill, grab.

Что такое jsp?

> grab “разобрался” как парсить, но не заполнять
Живой код в студию.

Офлайн

#3 Сен. 15, 2013 15:29:56

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

Заполнение форм mechanize, twill, grab.

Mechanize с javascripts не работает.
Код парсинга не по теме. Но вот заполнение формы с помощью mechanize прикладываю.

import mechanize
import sys
from mechanize import Browser
def sim():
    br=mechanize.Browser()
    br.set_proxies({'http':'proxy:****'})
    br.add_proxy_password(login,password)
    br.set_handle_equiv(True)
    br.set_handle_redirect(True)
    br.set_handle_referer(True)
    br.set_handle_robots(False)
    br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(),max_time=1)
    br.add_password(page.jsp,login,password)
    r=br.open(page.jsp)
    br.select_form(nr=0)
    br['name']='text'
    res=br.submit()
    content = res.read()
    with open("mechanize_results.html", "w") as f:
        f.write(content)
sim()   

Офлайн

#4 Сен. 15, 2013 15:37:37

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Заполнение форм mechanize, twill, grab.

Ещё раз спрашиваю, что такое jsp?
Зачем вы приложили код работы с mechanize, я имел в виду код работы с Grab конкретно с сайтом, на который вы хотите отправить форму?

Офлайн

#5 Сен. 15, 2013 16:13:40

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

Заполнение форм mechanize, twill, grab.

lorien
Ещё раз спрашиваю, что такое jsp?

Это формат страницы которую заполняю.
from grab import Grab
import logging
def sim():
    g = Grab(log_file='out.html')
    g.setup(proxy='proxy', proxy_type='http', proxy_userpwd='login:****')
    g.go('page.jsp')
    print g.xpath_text('//*')
sim()
Выдает страничку с ошибкой:
ERROR 407 Proxy Authentication Required
Authentication failed

Зы: По сути у меня запрашивается один и тотже пароль два раза. 1 при запуске браузера 2 при переходе на эту страницу.

Отредактировано noob_saibot (Сен. 15, 2013 16:14:26)

Офлайн

#6 Сен. 16, 2013 09:12:52

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

Заполнение форм mechanize, twill, grab.

lorien
Зачем вы приложили код работы с mechanize, я имел в виду код работы с Grab конкретно с сайтом, на который вы хотите отправить форму?
Код на грабе пустой поскольку до заполнения я так и не дошел. Как я описывал выше возникла проблема с работой через прокси при обращении к twill, и так же с граб (забыл указать в описании). Проблема с прокси решится если на грабе создать лист прокси и оттуда подсасывать?
А на mechanize не решить эту задачу?

Офлайн

#7 Сен. 16, 2013 16:15:59

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Заполнение форм mechanize, twill, grab.

Я вообще не понимаю, о чём вы говорите, поэтому счёл разумным просто помолчать.

Офлайн

#8 Сен. 16, 2013 17:02:24

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

Заполнение форм mechanize, twill, grab.

lorien
Я вообще не понимаю, о чём вы говорите, поэтому счёл разумным просто помолчать.
Я имел в виду использование:
load_proxylist()

План:
1. Захожу в браузер, запрашивается логин и пароль от прокси, мы его прописываем.
2. Перехожу на сайт N.
3. Сайт N запрашивает логин и пароль от прокси, мы опять его прописываем.
4. Находим форму.
5. Заполняем форму (поля, выпадающие списки, radiobutton).
6. Сабмит.

Проблемы:
Grab - проблемы c авторизацией
Twill - проблемы с авторизацией
Mechanize - Проблемы с заполнением форм, в частности: выпадающие списки, radiobutton.

Постарался как можно понятнее объяснить.

Офлайн

#9 Сен. 18, 2013 19:11:00

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Заполнение форм mechanize, twill, grab.

> Grab - проблемы c авторизацией
Трудно понять, что за проблемы т.к. лично у меня, да и у других пользователей граб таких проблем не наблюдается. Если вы дадите данные по прокси, я могу попробовать запустить у себя код с грабом.

Офлайн

#10 Окт. 1, 2013 16:01:36

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

Заполнение форм mechanize, twill, grab.

Проблему с Grab решил:

g.setup(proxy='proxy', proxy_type='http', proxy_userpwd='123:321')
g.go("http://*", userpwd='123:321')
Спасибо за попытку помочь

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version