войдите на сайт с помощью кнопки onclick, чтобы отправить - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь использовать python3 .7 для веб-скрейпинга веб-сайт , которому требуется user_email и пароль для входа.

Форма входа на страницу входа выглядит следующим образом:

  <div id="login">
<form action="/account/orthodox_login" method="post" id="orthodox_login">
  <input id="slugs_input_login" name="slugs[]" type="hidden" value="" />
  <input id="return_after_login" name="rt" type="hidden" value="" />
  <input name="user[url_source]" type="hidden" value="" id="login_form_url_source" />
  <input name="user[location_source]" type="hidden" value="orthodox_login" />

  <h1 id="member_h1">Member sign in</h1>

  <div id="notice_login" class="notice_message" style="margin-top: 20px"></div>

  <div id="with_email" class="fwb login_update" style="display: none; margin-bottom: 0; font-size: 13px; color: #484848;">Sign in with email:</div>

  <fieldset>
    <span>Email:</span>
    <input name="user[email]" id="login_user_email" type="email" autocorrect="off" autocapitalize="off" spellcheck="false" />
  </fieldset>


  <fieldset>
    <span>Password:</span>
    <div id='password_wrapper'><input name="user[password]" type="password" id="login_user_password" autocorrect="off" autocapitalize="off" /></div>
  </fieldset>


      <div class="register_button" onclick="submit_orthodox_login_form();">
        <span class="l"></span>
        <input class="c" type="button" value="Sign in" />
        <span class="r"></span>
      </div>
    </form>


      <div id="or_google" class="fwb mb7 login_update" style="display: none; width: 250px; font-size: 13px; color: #484848;">Or sign in with Google:</div>
  <div id="another_place" class="login_update" style="display: none; margin-left: -10px;"></div>
  <div class="secret_line login_update" style="display: none; margin-bottom: 16px">
    <div style="border-bottom: 1px solid #ebebeb; width: 313px; margin-bottom: 0;"></div>
  </div>
  <div id="dont_have" class="roy-gray login_update" style="display: none">Don't have an account? <span class="link" onclick="open_header_log_in_popup_lightbox('headtabs_login',''); return false">Join now</span></div>
  </div>

Я искал другие сообщения о входе в систему, ответ дан в виде mechanicalsoup:

br = mechanicalsoup.StatefulBrowser(
    soup_config={'features': 'lxml'},
    raise_on_404=True,
    user_agent='MyBot/0.1: mysite.example.com/bot_info',
)

br.open("https://seekingalpha.com/account/login")
br.select_form('#orthodox_login')


browser["login"] = args.username
browser["password"] = args.password
resp = browser.submit_selected()

Однако в моем случае это не работает, поскольку в форме нет <input type="submit">, как в логине на github, а <div class="register_button" onclick="submit_orthodox_login_form();">.

Я также хотел бы перенаправить на эту ссылку после входа в систему, это фактический веб-сайт, который я хотел бы очистить.

1 Ответ

0 голосов
/ 28 мая 2020

Я думаю, ваш веб-сайт, который вы хотите автоматизировать, использует JavaScript, а MechanicalSoup не поддерживает javascript. Вам следует искать такие решения, как селен, которые поддерживают javascript

...