2013-06-29 2 views
1

Я пытаюсь использовать механизацию для автоматического входа на сайт и проверки некоторых цифр. Я уверен, что прошёл первую страницу с обычной формой пароля пользователя, но вторая страница входа в систему запрашивает конкретные символы из ответа на вопрос безопасности, который вы выбираете во время создания учетной записи.FIlling в рандомизированной форме с Python и Mechanize

Как если бы ваш любимый питомец был назван garfield, и он попросил 2-го, 4-го и 5-го символов, вам нужно было бы заполнить 3 входа с помощью a, f, i и отправить эту форму.

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

<label for="frmentermemorableinformation1:strEnterMemorableInformation_memInfo1">Character 5 &#160;</label> 

Это еще один 2 из этих меток для 2 других символов, которые будут заполнены в на форме, я думал, что это было бы хорошей идеей, чтобы механизировать прочитать поиск источника в течение первых 3 появлений в «character», а затем чтение символа сразу после каждого события, поскольку первые 3 раза этот текст появляется для этих меток.

Как я могу это сделать, и есть ли более простой способ сделать это, а не читать весь исходный код, может ли автоматизировать поиск меток внутри этой формы или какой-либо другой ярлык? Кроме того, я не очень разбираюсь в программировании, поэтому любые дополнительные детали или объяснения будут отличными. Спасибо.

+1

[? Что вы пробовали] (http://mattgemmell.com/2008/12/08/what-have-you-tried/) –

ответ

0

How would i go about doing this and is there an easier way to do this rather than reading through the entire source code, can mechanize specifically search for labels within that form or some other shortcut?

Я не знаком с Mechanize в питона, но с Mechanize рубина, например, вы используете HTML-анализатор для поиска через HTML. Парсером python html является BeautifulSoup или libxml. BeautifulSoup проще установить - libxml имеет множество зависимостей и может быть медведем для установки. Вот пример BeautifulSoup:

from BeautifulSoup import BeautifulSoup as bs 
import re 

soup = bs(open('html.html')) 

form = soup.find(id="form1") 

labels = form.findAll('label', text=re.compile("Character \d+")) 
labels = labels[:3] 

for label in labels: 
    print(label.string) 

--output:-- 
Character 5 &#160; 
Character 6 &#160; 
Character 7 &#160; 
+0

Эй, спасибо за это я получил строку, в которой я нуждался не совсем так, но примера было достаточно, чтобы помочь мне прочитать о регулярных выражениях и прекрасном супе и понять это (возможно, очень неэффективно, но, по крайней мере, это работает). Другое дело, что при попытке печати label.string у меня получилась «RuntimeError: максимальная глубина рекурсии, превышаемая при получении str объекта», но она работает, когда используется только данные ярлыков, приведенные в моем вопросе, поэтому я предполагаю, что это может быть страница сам? – Diofsi

+0

Теперь у меня есть еще одна ошибка при вводе правильных данных в форму: «ItemNotFoundError: недостаточно элементов с именем«? »С? это однострочное письмо. Но я предполагаю, что это еще одна проблема, которая требует другого вопроса? – Diofsi

+0

Вы не разместили ни одного кода, ни html, поэтому я понятия не имею, что может быть неправильным. Тем не менее, вы можете искать в Google эти ошибки и посмотреть, применимы ли какие-либо из этих ситуаций к тому, что вы делаете в своем коде. – 7stud