Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erläuterung von Beispielen für die Verwendung von Python zum Schreiben von Crawlern mithilfe der Requests-Bibliothek

Ausführliche Erläuterung von Beispielen für die Verwendung von Python zum Schreiben von Crawlern mithilfe der Requests-Bibliothek

零下一度
零下一度Original
2017-06-30 18:00:562692Durchsuche

Einfache Get-Anfrage:

#-*- coding:utf-8 -*-import requests
url = 'www.baidu.com'r = requests.get(url)print r.text

Get-Anfrage mit Parametern:

#-*- coding:utf-8 -*-import requests
url = 'http://www.baidu.com'payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get(url, params=payload)print r.text

POST-Anfrage zur Simulation der Anmeldung und einiger Methoden zur Rückgabe von Objekten:

#-*- coding:utf-8 -*-import requests
url1 = 'www.exanple.com/login'#登陆地址url2 = "www.example.com/main"#需要登陆才能访问的地址data={"user":"user","password":"pass"}
headers = { "Accept":"text/html,application/xhtml+xml,application/xml;",            "Accept-Encoding":"gzip",            "Accept-Language":"zh-CN,zh;q=0.8",            "Referer":"www.example.com/",            "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36"
            }
res1 = requests.post(url1, data=data, headers=headers)
res2 = requests.get(url2, cookies=res1.cookies, headers=headers)print res2.conten

t#Den binären Antwortinhalt abrufen print res2.raw#Den ursprünglichen Antwortinhalt abrufen, stream=True ist erforderlich print res2.raw.read(50)print type(res2.text)#Den in Unicode dekodierten Inhalt zurückgeben print res2. urlprint res2.history# Tracking-Umleitung print res2.cookiesprint res2.cookies['example_cookie_name']print res2.headersprint res2.headers['Content-Type']print res2.headers.get('content-type')print res2.json # Sprechen Sie über den zurückgegebenen Inhalt. Codiert als jsonprint res2.encoding#Inhaltscodierung zurückgeben print res2.status_code#HTTP-Statuscode zurückgeben print res2.raise_for_status()#Fehlerstatuscode zurückgeben

Verwenden Sie das Schreiben von Session()-Objekten Methode (Vorbereitete Anfragen):

#-*- coding:utf-8 -*-import requests
s = requests.Session()
url1 = 'www.exanple.com/login'#登陆地址url2 = "www.example.com/main"#需要登陆才能访问的地址data={"user":"user","password":"pass"}
headers = { "Accept":"text/html,application/xhtml+xml,application/xml;",            "Accept-Encoding":"gzip",            "Accept-Language":"zh-CN,zh;q=0.8",            "Referer":"http://www.example.com/",            "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36"
            }
prepped1 = requests.Request('POST', url1,
    data=data,
    headers=headers
).prepare()
s.send(prepped1)'''
也可以这样写
res = requests.Request('POST', url1,
data=data,
headers=headers
)
prepared = s.prepare_request(res)
# do something with prepped.body
# do something with prepped.headers
s.send(prepared)
'''prepare2 = requests.Request('POST', url2,
    headers=headers
).prepare()
res2 = s.send(prepare2)print res2.content

Andere Schreibweise:

#-*- coding:utf-8 -*-import requestss = requests.Session()url1 = 'www.exanple.com/login'#登陆地址url2 = "www.example.com/main"#需要登陆才能访问的页面地址data={"user":"user","password":"pass"}headers = { "Accept":"text/html,application/xhtml+xml,application/xml;",            "Accept-Encoding":"gzip",            "Accept-Language":"zh-CN,zh;q=0.8",            "Referer":"http://www.example.com/",            "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36"            }res1 = s.post(url1, data=data)res2 = s.post(url2)print(resp2.content)
SessionApi
其他的一些请求方式
>>> r = requests.put("http://httpbin.org/put")>>> r = requests.delete("http://httpbin.org/delete")>>> r = requests.head("http://httpbin.org/get")>>> r = requests.options("http://httpbin.org/get")

Aufgetretene Probleme:

Bei der Ausführung unter cmd ist ein kleiner Fehler aufgetreten:

UnicodeEncodeError


Offensichtlich ist beim Kodieren ein Fehler aufgetreten


2. Welche Kodierung verwendet wurde

'gbk'-Codec kann Zeichen nicht kodieren

Fehler bei der Verwendung der GBK-Codierung

Lösung:

Bestimmen Sie die aktuelle Zeichenfolge, z. B.

Es wurde festgestellt, dass die Zeichenfolge von HTML Ist utf-8, können Sie es direkt über utf-8 kodieren.

print r.text.encode('utf-8')

#-*- coding:utf-8 -*-import requests
url = 'www.baidu.com'r = requests.get(url)print r.encoding
>utf-8

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung von Beispielen für die Verwendung von Python zum Schreiben von Crawlern mithilfe der Requests-Bibliothek. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn