2017-01-31 37 views
11

Szukam otworzyć połączenie z python do http://www.horseandcountry.tv, która pobiera moje parametry logowania za pomocą metody POST. Chciałbym otworzyć połączenie z tą stroną internetową, aby zeskanować stronę dla wszystkich linków wideo (to też nie wiem jak to zrobić, ale używam projektu do nauki).Tworzenie połączenia z witryną subskrypcji w pythonie

Moje pytanie brzmi: w jaki sposób mogę przekazać swoje poświadczenia do poszczególnych stron witryny? Na przykład, jeśli wszystko, co chciałem zrobić, to użyć kodu Pythona, aby otworzyć okno przeglądarki wskazujące na http://play.horseandcountry.tv/live/ i mieć otwarte okno ze mną już zalogowanym, jak mam to zrobić?

Odpowiedz

7

O ile wiem, masz dwie opcje w zależności jak chcesz indeksować i co trzeba się czołgać:

1) Użyj urllib. Możesz wykonać swoje żądanie POST z niezbędnymi danymi logowania. Jest to rozwiązanie niskiego poziomu, co oznacza, że ​​jest to szybkie, ale nie obsługuje elementów wysokiego poziomu, takich jak kody javascript.

2) Użyj selenium. Dzięki temu możesz symulować przeglądarkę (Chrome, Firefox, inne ..) i uruchamiać akcje za pomocą kodu Pythona. Wtedy jest znacznie wolniej, ale działa dobrze na zbyt "wyrafinowanych" stronach internetowych.

Co zwykle robię: Próbuję pierwszej opcji i jeśli napotkam problem taki jak warstwa bezpieczeństwa javascript na stronie internetowej, a następnie przejdź do opcji 2. Ponadto selen może otworzyć prawdziwą przeglądarkę z pulpitu i dać ci wizualizacja twojego złomowania.

W każdym razie po prostu wybierz "urllib/selen logowanie do witryny", a znajdziesz to, czego potrzebujesz.

+0

Brzmi jak selen zrobi dokładnie to, co ja jestem po, więc jest to zdecydowanie poprawna odpowiedź. Ostatecznie chciałbym go uruchomić jako dodatek do kodi na raspberry Pi, więc nie będę miał dostępu do tej biblioteki! Chore badania urllib bardziej dokładnie, ponieważ mam nadzieję, że mogę osiągnąć to, czego szukam sam! Dzięki – user2145312

+0

Podobnie jak w innych przypadkach, żądania wykonują również zadanie (np. Urllib). Już uruchomiłem selen na raspberry pi, spróbuj użyć PhantomJS jako przeglądarki internetowej (bez interfejsu graficznego), aby zaoszczędzić trochę zasobów obliczeniowych. – debzsud

1

Jeśli chcesz uniknąć używania selen (otwarcie przeglądarek internetowych), można przejść do wniosków, może zalogować się na stronie internetowej i chwycić coś trzeba w tle.

Oto jak zalogować się do tej witryny z prośbami.

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!' 

Jeśli potrzebujesz wyjaśnień dla tego, można sprawdzić to answer, lub żąda documentation

Powiązane problemy