Как использовать python для входа на orcid.org - PullRequest
0 голосов
/ 26 февраля 2020

Проблема

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

Попытки

Это должно быть очень просто:

import mechanicalsoup

browser = mechanicalsoup.StatefulBrowser()
browser.open('https://orcid.org/signin')
browser.select_form('form[id="loginForm"]')

Однако это приводит к LinkNotFoundError.

Я также попытался просто найти любую форму с браузером без сохранения состояния:

import mechanicalsoup

browser = mechanicalsoup.Browser()
login_page = browser.get('https://orcid.org/signin')
print(login_page.soup.find_all('form'))

И это приводит к пустому списку, так что он даже не видит форму в ответе. Это смутило меня, поскольку print(login_page.soup) возвращает все, и я мог видеть там форму.

Вопрос

Как я могу получить доступ к форме и успешно войти в систему? (Я полностью открыт для использования чего-то другого, кроме механического суппорта.)

Я думаю, это связано с тем, что вы можете переключать методы входа на самой странице. Смотрите здесь:

orcid login page image

Я очень далек от эксперта по интерфейсу, но когда я просматриваю страницу, я представляю, что это каким-то образом регулируется events видно здесь:

orcid login page inspector image

Если кто-то может предоставить какую-либо помощь или понимание, я, безусловно, буду благодарен. Спасибо!

1 Ответ

2 голосов
/ 27 февраля 2020

Хотя форма входа в систему https://orcid.org/signin представляется простой формой, для которой не требуется JavaScript, создание самой страницы входа в систему делает .

Вы можете проверить это, посетив страницу входа в браузере с отключенной JavaScript (например, см. инструкции для Chrome). Когда я это делаю, я вижу пустую страницу со следующим сообщением:

Для полной функциональности этого сайта необходимо включить JavaScript. Вот инструкции по включению JavaScript в вашем веб-браузере.

К сожалению, похоже, что MechanicalSoup не сможет вам здесь помочь, поскольку он не поддерживает JavaScript. Возможно, вам придется попробовать полноценный браузерный эмулятор, такой как Selenium.

...