Python Web Scrape: работа с пользовательским логином - PullRequest
0 голосов
/ 20 октября 2018

Я видел сообщения и ТАК вопросы об учетных данных пользователя / имени входа для веб-поиска Python с красивыми модулями супа и запросов, и решения применяются, когда на странице встроено поле пользователя / пароля.

Но как насчет всплывающих окон?Нужен ли другой подход?

Я получаю доступ отсюда: https://csas.nbme.org/acpweb/servlet/AcpNbmeLogin?entryPoint=1001

, который открывает всплывающее окно https://csas.nbme.org/acpweb/servlet/userConnectInfo

Очевидно, у меня есть данные для входа.Мои первые попытки сценария не работают.

Итак, есть ли другие модули или другой подход, который я должен использовать?

Спасибо.

1 Ответ

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

Сначала вы должны выполнить POST-запрос, чтобы отправить учетные данные на https://csas.nbme.org/acpweb/servlet/AcpUserMain со следующей информацией:

dbconnect   y
entryPoint  1001
numblogon   0
password    yourpassword
username    yourusername

(я использовал вкладку «Сеть» моей консоли Firefox, чтобы увидеть, какой запроссделано при отправке всплывающей формы)

Сервер отправит вам куки, которые вы должны сохранить - модуль запросов делает это хорошо с сессиями :

СессияОбъект позволяет сохранять определенные параметры в запросах.Он также сохраняет файлы cookie по всем запросам, сделанным из экземпляра Session

Затем вы можете перейти на нужную страницу (используя тот же объект сеанса).

Код должен выглядеть следующим образом:

import requests

with requests.Session() as s:
    s.post('https://csas.nbme.org/acpweb/servlet/AcpUserMain', data = {
        'dbconnect': 'y',
        'entryPoint': 1001,
        'numblogon': 0,
        'password': <yourpassword>,
        'username': <yourusername>,
    })

    r = s.get(<url to parse>)

#Use beautifoulsoup on r
...