2011-07-02 18 views
7

Próbowałem pobrać stronę HTML za pomocą programu pycurl, więc mogę następnie przeanalizować ją pod kątem istotnych informacji, używając str.split i niektórych dla pętli. Wiem pycurl pobiera HTML, ponieważ drukuje go do terminala, jednak gdy próbuję coś zrobić jakUzyskiwanie kodu HTML za pomocą Pycurl

html = str(c.perform()) 

Zmienna będzie po prostu trzymać ciąg, który mówi „None”.

Jak mogę użyć pycurl, aby uzyskać kod HTML, lub przekierować cokolwiek wysyła na konsolę, aby mógł być użyty jako łańcuch, jak opisano powyżej?

Wielkie dzięki dla każdego, kto ma jakieś sugestie!

Odpowiedz

20

to wyśle ​​żądanie i/wydrukować treść odpowiedzi Store:

from StringIO import StringIO  
import pycurl 

url = 'http://www.google.com/' 

storage = StringIO() 
c = pycurl.Curl() 
c.setopt(c.URL, url) 
c.setopt(c.WRITEFUNCTION, storage.write) 
c.perform() 
c.close() 
content = storage.getvalue() 
print content 

jeśli chcesz zapisać nagłówki odpowiedzi, przeznaczenie:

c.setopt(c.HEADERFUNCTION, storage.write) 
+0

Świetnie! Dokładnie to, czego szukałem. Chociaż jedna linia jest niepoprawna. Należy powiedzieć, storage = StringIO.StringIO(). W przeciwnym razie powstaje błąd. Niezależnie, dziękuję za pomoc !! – Sinthet

+3

Myślę, że jest poprawny tak jak jest. zauważ, że robię "z StrongIO import StringIO" –

+0

Ah, to może być to. Sprawdziłem źródło i właśnie zaimportowałem całą bibliotekę. Przepraszam za zamieszanie! – Sinthet

4

PERFORM() metoda wykonuje html pobiera i zapisuje wynik do określonej funkcji. Musisz podać bufor, aby umieścić html i funkcję zapisu. Zazwyczaj można to osiągnąć za pomocą obiektu StringIO następująco:

import pycurl 
import StringIO 

c = pycurl.Curl() 
c.setopt(pycurl.URL, "http://www.google.com/") 

b = StringIO.StringIO() 
c.setopt(pycurl.WRITEFUNCTION, b.write) 
c.setopt(pycurl.FOLLOWLOCATION, 1) 
c.setopt(pycurl.MAXREDIRS, 5) 
c.perform() 
html = b.getvalue() 

Można również użyć pliku lub pliku tymczasowego lub cokolwiek innego, co może przechowywać dane.

Powiązane problemy