Отправка формы с механизированной HTTP-ошибкой 500

Это мой первый раз, когда я использую механизировать, и я пытаюсь заполнить форму с механизировать

Вот параметры моего браузера:

br.set_handle_equiv(True)
br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)


cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)


br.addheaders = br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-    US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]

Я заполняю форму допустимыми значениями и нажимаю br.submit(), но мне выдает HTTP: Error 500: Internal Server Error. Я предполагаю, что он обнаруживает, что это бот или что-то еще, отправляющее заявку? Но я подумал, что об этом должны были позаботиться заголовки.


person Kevin    schedule 14.03.2013    source источник
comment
часть кода, которая у вас есть, работает нормально. Убедитесь, что отправленная информация действительно работает на веб-странице или что информация, которую вы заполняете, верна и не требует дополнительного форматирования. Мб вы можете дать веб-страницу, на которой вы запускаете свой скрипт? Кроме того, почему у вас есть двойные «br.addheaders = br.addheaders =» и пробелы между «en-US»?   -  person 4d4c    schedule 15.03.2013
comment
Упс, в этой части была опечатка. Я пытаюсь сделать это для страницы регистрации Yahoo (edit.yahoo.com/), чтобы я мог перейти на страницу с проверкой кода и проанализировать изображение, не заполняя регистрацию вручную. Я попытался сделать это в реальном браузере, и это сработало, поэтому я знаю, что значения, которые я заполняю, работают. Но когда я перехожу на настоящую страницу регистрации Yahoo в реальном браузере, это выдает мне эту ошибку: Извините, в настоящее время невозможно обработать запрос - ошибка 999.   -  person Kevin    schedule 15.03.2013
comment
Можете ли вы показать, как вы отправляете какие-либо параметры раскрывающегося списка (например, пол)?   -  person 4d4c    schedule 15.03.2013
comment
br.form['пол'] = [м]   -  person Kevin    schedule 15.03.2013


Ответы (1)


Вы можете использовать http://grablib.org/docs/, это намного проще и эффективнее. Попытайся. Установить на линукс:

pip установить pycurl lxml

пип установить захват

from grab import Grab

g = Grab()
g.go('http://google.com') # go to google.com
g.choose_form(0)  #form number
g.set_input('q', 'test')  # 'q'-input name, 'test' - search query
g.submit()  # send request
print g.xpath_list('//a/text()') # view xpath result link list 

Извините за мой английский.

person Alexander Zh    schedule 14.03.2013