2012-11-11 12 views
15

Ho letto molte risposte riguardo al web scraping che parla di BeautifulSoup, Scrapy e.t.c. per eseguire scraping web.Un modo coerente per salvare la fonte della pagina web

C'è un modo per fare l'equivalente di salvare la fonte di una pagina da un browser web?

Cioè, c'è un modo in Python per puntarlo su un sito Web e farlo salvare il sorgente della pagina in un file di testo con solo i moduli standard di Python?

Qui è dove ho avuto modo di:

import urllib 

f = open('webpage.txt', 'w') 
html = urllib.urlopen("http://www.somewebpage.com") 

#somehow save the web page source 

f.close() 

Non molto lo so - ma alla ricerca di codice a tirare in realtà l'origine della pagina in modo da poter scrivere. Ho capito che urlopen crea solo una connessione.

Forse c'è un equivalente readlines() per leggere le righe di una pagina Web?

+2

Benvenuti a Stack Overflow! Ti invitiamo a [ricercare le tue domande] (http://stackoverflow.com/questions/how-to-ask). Se hai già [provato qualcosa] (http://whathaveyoutried.com/), aggiungilo alla domanda - in caso contrario, cerca e prova prima la tua domanda e poi torna indietro. –

+1

Grazie! Sono ancora molto nuovo al sito, quindi mi dispiace se mi sono avvicinato a questo nel modo sbagliato. Aggiungerò del codice di dove sono arrivato :) –

risposta

29

Puoi provare urllib2:

import urllib2 

page = urllib2.urlopen('http://stackoverflow.com') 

page_content = page.read() 

with open('page_content.html', 'w') as fid: 
    fid.write(page_content) 
+3

Per evitare problemi di codifica usa 'con open ('page_content.html', 'wb') come fid:' –

0

codice aggiornato, per Python 3 (dove urllib2 è deprecata):

from urllib.request import urlopen 
html = urlopen("http://www.google.com/") 
with open('page_content.html', 'w') as fid: 
    fid.write(html) 
Problemi correlati