Heim >Backend-Entwicklung >Python-Tutorial >Das Programm simuliert Browseranfragen und Sitzungsaufbewahrungs-Python-Implementierung
Das Lesen von Daten von einer Seite unter Python kann einfach über urllib2 angefordert werden
import urllib2 print urllib2.urlopen('http://www.pythontab.com').read()
Wenn es sich um den POST-Anfragevorgang der Seite handelt, benötigen Sie um Header-Informationen, übermittelte Beitragsdaten und eine Anforderungsseite bereitzustellen.
Die Beitragsdaten benötigen urllib.encode(), wodurch das Wörterbuch tatsächlich in das Format „data1=value1&data2=value2“ konvertiert wird.
import urllib import urllib2 HEADER = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0', 'Referer' : 'http://202.206.1.163/logout.do' } POSTDATA = { 'data1': 'value1', 'data2': 'value2' } HOSTURL = 'http://xxx.com' enpostdata = urllib.urlencode(POSTDATA) urlrequest = urllib2.Request(hosturl,enpostdata,HEADER) urlresponse = urllib2.urlopen(urlrequest) print urlresponse.read()
Nach der Anfrage führt der Browser einen Sitzungsaufbewahrungsprozess durch. Die Sitzung wird in einem Cookie gespeichert Wird im Anforderungsheader platziert. Wenn das Cookie verloren geht, wird die Sitzung getrennt.
Sie müssen die Cookie-Aufbewahrung unter Python einrichten
# cookie set # 用来保持会话 cj = cookielib.LWPCookieJar() cookie_support = urllib2.HTTPCookieProcessor(cj) opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler) urllib2.install_opener(opener)
Das Folgende ist eine Bibliotheksdatei, die der Einfachheit halber die oben genannten Wissenspunkte zusammenfasst Verwendung:
# filename: analogop.py #!/usr/bin/python # -*-coding:UTF-8 -*- # author: 初行 # qq: 121866673 # mail: zxbd1016@163.com # message: I need a python job # time: 2014/10/8 import urllib import urllib2 import cookielib # cookie set # 用来保持会话 cj = cookielib.LWPCookieJar() cookie_support = urllib2.HTTPCookieProcessor(cj) opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler) urllib2.install_opener(opener) # default header HEADER = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0', 'Referer' : 'http://202.206.1.163/logout.do' } # operate method def geturlopen(hosturl, postdata = {}, headers = HEADER): # encode postdata enpostdata = urllib.urlencode(postdata) # request url urlrequest = urllib2.Request(hosturl, enpostdata, headers) # open url urlresponse = urllib2.urlopen(urlrequest) # return url return urlresponse
Dies ist eine Testdatei, da Leser keine Testumgebung haben und diese daher selbst erstellen oder eine Website dafür finden müssen Test:
#filename: test.py from analogop import geturlopen postd = { 'usernum': '2011411111', 'upw': '124569', 'userip': '192.168.10.1', 'token': 'xxx' } urlread = geturlopen('http://127.0.0.1:8000/login/', postd) print urlread.read().decode('utf-8') urlread = geturlopen('http://127.0.0.1:8000/chafen/', {}) print urlread.read().decode('utf-8')