@iM32
Ad. 1 Sorry za przysłowiowe męczenie buły, ale do tej pory miałem tylko docznienia z automatyzacją za pomocą Webdrivera i chciałem pójść krok dalej. W Webdriverze wszystko jest o wiele prostsze, wystarczy zlokalizować element po ID czy xpathem, wpisać tekst do formularza, wysłać i znowu po lokalizacji danego elementu wyciągnąć interesujące mnie dane z jakiegoś tagu html. Skrypt, które chce napisać miałby może z 10 linijek kodu. Tutaj jest trochę więcej roboty i do tego dochodzi zapoznanie się z biblioteką requests. Mógł byś dodać komentarze do kodu? Co się mniej więcej dzieje w danym momencie? Nie rozumiem czemu to nie może wyglądać jakoś tak:
import requests
headers = {'User-Agent': 'Mozilla/5.0'}
payload = {'email':'mójemail'}
session = requests.Session()
x = session.post('http://m.facebook.com/login/identify?ctx=recover',headers=headers,data=payload)
print x.text
Czemu w kodzie powyżej po wysłaniu POST skrypt zwraca mi htmla ze strony wyjściowej?
AD.2 Kawałek Twojego kodu, którego już za bardzo nie rozumiem.
def print_url(r, *args, **kwargs): #Poczytałem trochę o *args i **kwargs, ale nie do końca to rozumiem, tym bardziej, że kod działa bez *args
print(r.url)
# z = requests.get(r.url) Dodałem te dwie linijki, żeby zescrapować kod html interesującej mnie strony, ale nie działa tak jak bym sobie tego życzył :)
# print z.text
#Tutaj to już totalnie nie wiem o co chodzi, byłbym wdzięczny jak byś to mniej więcej opisał, chodzi mi głównie o with
with requests.Session() as req:
req.encoding = "utf-8"
req = requests.post(urlbas, data=payload, headers=headers, hooks=dict(response=print_url))
Nie wiem czy mój brak zrozumienia wynika z niedoboru wiadomości na temat protokołu http i metody POST czy samego Pythona. Będę wdzięczny za kilka komentarzy do kodu. Dziękuje pięknie za pomoc.