У меня есть сценарий Python, который принимает ряд переменных. У меня также есть HTML-страница, которая может получать значения сообщений.

Как я могу запустить браузер из python и указать его на html-странице, которую я имею выше, и отправить эти переменные записи в html url?

У меня проблема в том, что если я использую urllib / urllib2 для публикации, она не загружает окно браузера. И если я хочу загрузить окно браузера, я не могу отправить сообщение на URL.

Вот как вы можете сделать POST для URL, но он не открывает браузер, вместо этого он может получать обратно значения, как это. Но мне не нужно читать значения назад, мне нужно открыть интернет-браузер, указать его на определенный URL-адрес и опубликовать переменные для этого URL-адреса.

data = urllib.urlencode({"fileTitle" : "ThisFileName", "findtype" : "t", "etc" : "etc"})
f = urllib.urlopen("http://www.domain.com/someurl/", data)
# Read the results back.
s = f.read()
s.close()
1
Martin 16 Июл 2010 в 13:02

3 ответа

Лучший ответ

Кажется, это единственный способ получить то, что я хочу сделать.

Вы можете использовать urllib для вызова страницы на сервере, на котором хранятся данные (либо в таблице sql, либо во временном файле) и который возвращает уникальный идентификатор. Затем вы можете использовать уникальный идентификатор для извлечения этих данных из известного источника.

Код python будет выглядеть примерно так:

import urllib
data = urllib.urlencode({"postField1" : "postValue1", "postField2" : "postValue2", "etc" : "etc"})
f = urllib.urlopen("http://www.domain.com/storePostData.php", data)
# At this point your storePostData.php file stores all the post 
# info in either an sql DB or temporary file so this can accessed later on and
# an uuid is passed back which we now read below. In may case I store all post        
# fields in a sql DB and each column represents each post field.
uuid = f.read()
# the uuid is the sql table id field which is auto_incremented.
# SO now we load the default browser below and send it the uuid so the php script
# can access the sql data. Once it has been accessed and the form fields have been 
# received then we delete that row as the information is useless to us now that we 
# have filled in the forms fields
import webbrowser
webbrowser.open_new("http://www.domain.com/someOtherUrl?uuid=" + uuid)

Вся остальная часть работы выполняется с помощью сценариев PHP, где она хранит информацию, а затем извлекает информацию на основе uuid. Я не собираюсь приводить здесь пример кода, так как это всего лишь общие знания, и все, что я пытаюсь сделать, это прояснить эту концепцию.

Я надеюсь, что это помогает кому-то.

Ура

0
Martin 18 Июл 2010 в 13:33

Должны ли значения предоставляться через HTTP POST? Не могли бы вы предоставить параметры как часть URL и использовать вместо них GET?

Например Создайте URL, подобный следующему:

http: //somehost/somefile.html? param1 = value1 & param2 = value2 &...

0
Vortura 16 Июл 2010 в 09:13

"... он не загружает окно браузера."

Извините, я не до конца понимаю, что вы пытаетесь сделать. Но, возможно, Selenium Remote Control (RC) вам интересен. Вы можете писать скрипты для удаленного управления браузером. Используется для автоматического тестирования. Python также поддерживается. Вы можете сделать браузер для отправки форм или перейти по ссылкам, например. в сценарии PHP или что-то еще.

0
kschaper 16 Июл 2010 в 09:49