Создание соединения с сайтом подписки в python

Я ищу, чтобы открыть соединение с python с http://www.horseandcountry.tv, который принимает мои параметры входа через метод POST. Я хотел бы открыть соединение с этим сайтом, чтобы очистить сайт от всех видеороликов (это я еще не знаю, как это сделать, но я использую проект для изучения).

Мой вопрос: как передать свои учетные данные на отдельные страницы веб-сайта? Например, если все, что я хотел сделать, это использовать код python, чтобы открыть окно браузера, указывающее на http://play.horseandcountry.tv/live/ и открыть его, когда я уже вошел в систему, как мне это сделать?

Ответ 1

Насколько я знаю, у вас есть два варианта, зависящие от того, как вы хотите обходить и что нужно сканировать:

1) Используйте urllib. Вы можете выполнить свой запрос POST с необходимыми учетными данными. Это низкоуровневое решение, что означает, что это быстро, но не обрабатывает файлы высокого уровня, такие как javascript-коды.

2) Используйте selenium. В то время как вы можете имитировать браузер (Chrome, Firefox, другие..) и запускать действия через ваш код на Python. Затем он намного медленнее, но хорошо работает со слишком "сложными" веб-сайтами.

Что я обычно делаю: я пробую первый вариант, и если у вас возникла проблема, подобная уровню безопасности javascript на веб-сайте, перейдите на вариант 2. Кроме того, селен может открыть реальный веб-браузер со своего рабочего стола и дать вам визуальный ваш отказ.

В любом случае просто запустите "urllib/selenium login to website", и вы найдете то, что вам нужно.

Ответ 2

Если вы хотите избежать использования Selenium (открытие веб-браузеров), вы можете обращаться за запросами, он может заходить на сайт и захватывать все, что вам нужно, в фоновом режиме.

Вот как вы можете войти на этот сайт с запросами.

import requests
from bs4 import BeautifulSoup

#Login Form Data
payload = { 
    'account_email': 'your_email',
    'account_password': 'your_passowrd',
    'submit':   'Sign In'
}

with requests.Session() as s:
    #Login to the website.
    response = s.post('https://play.horseandcountry.tv/login/', data=payload)

    #Check if logged in successfully
    soup = BeautifulSoup(response.text, 'lxml')
    logged_in = soup.find('p', attrs={'class': 'navbar-text pull-right'})
    print s.cookies
    print response.status_code
    if logged_in.text.startswith('Logged in as'):
        print 'Logged In Successfully!'

Если вам нужны объяснения, вы можете проверить этот ответ или запросить документация