html / javascript, автоматически получающий ссылку от кнопки отправки (возможно, автоматизация с помощью python?) - PullRequest
2 голосов
/ 16 апреля 2010

У меня есть веб-сайт, на котором я должен нажать кнопку отправки в форме. Это дает мне ссылку. Я знаю, что ссылка составлена ​​с параметром, который передается через скрытое значение. Мне было интересно, смогу ли я создать скрипт Python или что-то еще, что бы перейти на веб-сайт и щелкнуть некоторые кнопки, возвращающие ссылку, которую генерирует кнопка отправки, если так, как я мог бы передать дополнительный параметр, который влияет на создание ссылки?

спасибо заранее.

Ответы [ 3 ]

1 голос
/ 16 апреля 2010

Взгляните на эту документацию пакета urlib2. Ниже приведен код, который вы бы использовали, но документация (очень хорошо) объясняет, что происходит.

Выдержка:

import urllib
import urllib2

url = 'http://www.someserver.com/cgi-bin/register.cgi'
values = {'name' : 'Michael Foord',
          'location' : 'Northampton',
          'language' : 'Python' }

data = urllib.urlencode(values)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
the_page = response.read()

Вам потребуется использовать анализатор HTML, например BeautifulSoup , чтобы получить имя параметра и значение, которое публикуется при нажатии кнопки.

Изменить:

Да, вы также можете использовать механизировать для этого. Вы бы сделали что-то вроде этого (не проверено):

from mechanize import Browser

br = Browser()
br.open("http://www.example.com/")  # this would be your website
br.select_form(name="order")        # change this to the name of your form
response = br.submit()              # submits the form, just like if you clicked the submit button
print response.geturl()             # prints the URL you are looking for

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

Проверьте примеры / документацию для объекта ClientForm, если вам нужно больше контроля.

1 голос
/ 16 апреля 2010

После того, как вы загрузили свои html-данные с помощью mechanize , как сказали другие пользователи, вы можете использовать Beautifulsoup , например:

from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(html_data)
hidden_tag = soup.find('input',name='hiddenId',type='hidden') 
hidden_value = hiddenId['value']

тогда вы можете создать POST с помощью urllib2 следующим образом:

import urllib
import urllib2
url = 'http://yoursite.com'
values = {'yourhiddenname' : hidden_value}
request = urllib2.Request(url, urllib.urlencode(values))
response = urllib2.urlopen(request)
result = response.read()
1 голос
/ 16 апреля 2010

Если вы ищете именно питона, попробуйте библиотеку Mechanize . Если вы просто извлекаете небольшие, но уникальные элементы документа HTML, вы можете также использовать регулярные выражения с python. Более прагматично работать с HTML-документом, тогда BeautifulSoup может быть более полезным, что вы можете комбинировать с mechanize / python.

Это более просто, чем может показаться на первый взгляд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...