In Pythons cURL-Bibliothek "PycURL" So erhalten Sie nach der Anmeldeauthentifizierung eine HTML- oder JSON-Antwort.
Der Punkt ist, wie man ein Cookie speichert und eine Anfrage mit dem Cookie sendet.
Das ist sehr hilfreich. So senden Sie verschiedene HTTP-Methoden aus der Installation. Danke, dass du mir geholfen hast. HTTP-Anforderungen mit PycURL
Gehen Sie wie folgt vor, um sich anzumelden und das Cookie zu speichern: (Der Einfachheit halber werden Ausnahmebehandlung, UserAgent, Timeout usw. vollständig ignoriert.)
login.py
import pycurl
import io
curl = pycurl.Curl()
curl.setopt(pycurl.URL,'https://www.xxx.com/login.php' )
curl.setopt(pycurl.POST, 1)
curl.setopt(pycurl.HTTPPOST, [('email', 'qqq@ppp'), ('pass', 'qqqppp')])
curl.setopt(pycurl.COOKIEJAR,'cookie.txt')
#Die folgenden zwei Zeilen beschreiben, wie die Antwort in der Befehlszeile nicht angezeigt wird. Nicht die Essenz.
b = io.BytesIO()
curl.setopt(pycurl.WRITEFUNCTION, b.write)
curl.perform()
Das Wichtigste hier ist "Speichern Sie das Login-Cookie in './ cookie.txt'" Um die Option hinzuzufügen, schreiben Sie wie folgt.
curl.setopt(pycurl.COOKIEJAR,'cookie.txt')
Später werde ich dieses Cookie anhängen und eine Anfrage an die Seite senden, für die eine Anmeldeauthentifizierung erforderlich ist.
Das Anforderungsziel und der Parametername sind
Sie sollten sich auf die Quelle der Anmeldeseite beziehen oder den Kommunikationsverlauf überprüfen (Chrome-Überprüfung → Registerkarte Netzwerk).
Wenn Sie mehr Parameter zum Anmelden benötigen, können Sie der Liste einfach weitere Elemente hinzufügen.
curl.setopt(pycurl.URL,'https://www.xxx.com/login.php' )
curl.setopt(pycurl.POST, 1)
curl.setopt(pycurl.HTTPPOST, [('para1', 'aaa'), ('para2', 'bbb'), ('para3', 'ccc'), ...])
Es wird davon ausgegangen, dass Sie den HTML-Code der Hauptseite von xxx.com erhalten, für die eine Anmeldung erforderlich ist.
request_page.py
import pycurl
import io
curl = pycurl.Curl()
curl.setopt(pycurl.URL,'https://www.xxx.com/main' )
curl.setopt(pycurl.COOKIEFILE,'cookie.txt')
b = io.BytesIO()
curl.setopt(pycurl.WRITEFUNCTION, b.write)
try:
curl.perform()
ret = b.getvalue()
http_code = curl.getinfo(pycurl.HTTP_CODE)
except Exception as e:
ret = str(e)
Das Wichtigste hier ist So senden Sie eine Anfrage mit der nach dem Anmelden generierten Datei cookie.txt
curl.setopt(pycurl.COOKIEFILE,'cookie.txt')
Ist zu beschreiben.
** Beim Speichern von Cookies pycurl.COOKIEJAR ** ** pycurl.COOKIEFILE ** bei Verwendung von Cookies
b = io.BytesIO()
curl.setopt(pycurl.WRITEFUNCTION, b.write)
ret = b.getvalue()
Damit wird der HTML-Code der Hauptseite in str-Typ in ret gespeichert und kann wie andere Variablen verarbeitet werden. Natürlich können Sie auch json anfordern. In diesem Fall ist die empfangene Antwort vom Typ str, daher wird sie vom json-Modul oder dergleichen decodiert.
Recommended Posts