Kas yra greičiausias HTTP GET metodas Python?

Kas yra greičiausias HTTP GET metodas Python, jei žinau, kad turinys bus eilutė? Aš ieškau dokumentų, skirtų greitajam vienos eilutės vaizdui, pavyzdžiui:

 contents = url.get("http://example.com/foo/bar") 

Bet viskas, ką galiu rasti naudojant „Google“, yra httplib ir urllib - ir aš negaliu rasti šiuose bibliotekose nuorodos.

Ar standartas Python 2.5 turi etiketę vienoje ar kitoje formoje, kaip nurodyta pirmiau, ar turėčiau parašyti funkciją url_get ?

  • Nenorėčiau parašyti perėjimo išvesties į wget ar curl .
361
14 марта '09 в 6:44 2009-03-14 06:44 Frank Krueger paklausė kovo 14 d., 09: 06-44 2009-03-14 06:44
@ 8 atsakymai

„Python 2.x“:

 import urllib2 urllib2.urlopen("http://example.com/foo/bar").read() 

„Python 3.x“:

 import urllib.request urllib.request.urlopen("http://example.com/foo/bar").read() 

Dokumentacija urllib.request ir skaityti .

Kaip tai yra

546
14 марта '09 в 6:48 2009-03-14 06:48 atsakymą davė Nickas Presta kovo 9 d., 06:48 2009-03-14 06:48

Galite naudoti biblioteką, vadinamą prašymais .

 import requests r = requests.get("http://example.com/foo/bar") 
border=0

Tai gana paprasta. Tada galite atlikti šiuos veiksmus:

 >>> print r.status_code >>> print r.headers >>> print r.content 
245
08 апр. atsakymas pateikiamas jvc 08 apr. 2013-04-08 04:30 '13, 4:30, 2013-04-08 04:30

Jei norite rasti sprendimą su httplib2, kad taptumėtės, apsvarstykite galimybę įdiegti anoniminį „Http“ objektą.

 import httplib2 resp, content = httplib2.Http().request("http://example.com/foo/bar") 
27
14 марта '09 в 19:40 2009-03-14 19:40 atsakymas pateikiamas -chomik, kovo 14 d., „09, 19:40 2009-03-14 19:40

Žr. Httplib2 , kuris kartu su daugybe labai naudingų funkcijų suteikia būtent tai, ko norite.

 import httplib2 resp, content = httplib2.Http().request("http://example.com/foo/bar") 

Kur yra atsako kūnas (kaip eilutė), ir resp bus būsenos ir atsako antraštės.

Jis nėra įtrauktas į standartinį „python“ įrenginį (tačiau tai reikalauja tik standartinio „python“), tačiau tai tikrai verta patikrinti.

15
14 марта '09 в 19:13 2009-03-14 19:13 atsakė Stevene kovo 14 d., 09:13, 2009-03-14 19:13

„WELLER“ programinės įrangos sprendimas yra tikrai naudingas, tačiau sužinojau, kad jis nespausdina pažangos atsisiuntimo procese. Tai ideali, jei po spausdinimo ataskaitos pridedate vieną eilutę.

 import sys, urllib def reporthook(a, b, c): print "% 3.1f%% of %d bytes\r" % (min(100, float(a * b) / c * 100), c), sys.stdout.flush() for url in sys.argv[1:]: i = url.rfind("/") file = url[i+1:] print url, "->", file urllib.urlretrieve(url, file, reporthook) print 
6
05 янв. Atsakymas duotas Xuan 05 Jan 2010-01-05 04:21 '10, 4:21 val. 2010-01-05 04:21

Štai „Wyth“ scenarijus „Python“:

 # From python cookbook, 2nd edition, page 487 import sys, urllib def reporthook(a, b, c): print "% 3.1f%% of %d bytes\r" % (min(100, float(a * b) / c * 100), c), for url in sys.argv[1:]: i = url.rfind("/") file = url[i+1:] print url, "->", file urllib.urlretrieve(url, file, reporthook) print 
5
14 марта '09 в 19:47 2009-03-14 19:47 atsakymas pateikiamas „ Theller“ kovo 14 d. , 09:47, 2009-03-14 19:47

Puikus sprendimas Xuan, Theller.

Jei norite dirbti su „python 3“, atlikite šiuos pakeitimus.

 import sys, urllib.request def reporthook(a, b, c): print ("% 3.1f%% of %d bytes\r" % (min(100, float(a * b) / c * 100), c)) sys.stdout.flush() for url in sys.argv[1:]: i = url.rfind("/") file = url[i+1:] print (url, "->", file) urllib.request.urlretrieve(url, file, reporthook) print 

Be to, prieš įvedantį URL turi būti „http: //“, priešingu atveju jis grąžina nežinomą klaidą, pvz., URL.

3
24 июня '15 в 17:18 2015-06-24 17:18 atsakymą pateikė Akshar birželio 15 d. 15:18 2015-06-24 17:18

Jei dirbate su HTTP API, taip pat yra patogesnis pasirinkimas, pavyzdžiui, „ Nap“ .

Pavyzdžiui, čia, kaip gauti „Github“ žaidėjus nuo 2014 m. Gegužės 1 d.

 from nap.url import Url api = Url('https://api.github.com') gists = api.join('gists') response = gists.get(params={'since': '2014-05-01T00:00:00Z'}) print(response.json()) 

Kiti pavyzdžiai: https://github.com/kimmobrunfeldt/nap#examples

2
22 мая '14 в 20:08 2014-05-22 20:08 atsakymą pateikė Kimmo gegužės 22 d. 14 d. 20:08 2014-05-22 20:08

Kiti klausimai apie „ arba Užduoti klausimą