Использование MechanicalSoup для установки значения элемента формы без имени - PullRequest
0 голосов
/ 01 октября 2018

Я перебрал всю документацию по mechansoup & beautifulsoup, но не могу понять, как установить значение элемента формы, используя 'id' (потому что у него нет имени).

import mechanicalsoup
browser = mechanicalsoup.StatefulBrowser()

browser.open(my_url)

form = browser.select_form('form[id="login-form"]')

browser.get_current_form().print_summary()
userid = browser.get_current_page().find('input', id='text-userid')
form.set("text-userid", "user")

Это меня достает -

<input class="login-text-box" id="text-userid" placeholder="Email" type="text" value=""/>
<input class="login-text-box" id="text-password" placeholder="Password" type="password" value=""/>
<input id="button-login" type="submit" value="Sign In"/>
<input id="remember-me-checkbox" name="rememberme" type="checkbox" value="rememberme"/>
LinkNotFoundError: No valid element named text-userid

Я пытался ссылаться на элемент через id, селектор CSS и другие комбинации, но получаю ту же ошибку.Я могу получить фактический тег (который я нашел в качестве решения аналогичной проблемы с кнопками отправки) с помощью:

userid = browser.get_current_page().find('input', id='text-userid')

, но form.set () не принимает теги напрямую.

Спасибо за любую помощь!

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Без атрибута name ввод будет совершенно бесполезным при отправке формы, поскольку данные формы будут вычисляться на основе этого атрибута name.Скорее всего, этот ввод будет использоваться JavaScript, а не путем отправки формы, и MechanicalSoup не поможет вам с JavaScript.См .:

https://mechanicalsoup.readthedocs.io/en/stable/faq.html#form-submission-has-no-effect-or-fails

Вкратце: вы, вероятно, хотите использовать Selenium вместо.

0 голосов
/ 02 октября 2018

После дальнейших исследований я узнал, что в этом случае мне следует использовать селен (а не механическое соединение).Я использовал это руководство, которое сделало именно то, что мне было нужно с первой попытки.

http://stanford.edu/~mgorkove/cgi-bin/rpython_tutorials/Scraping_a_Webpage_Rendered_by_Javascript_Using_Python.php

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