PDA

View Full Version : copiare contenuti pagine internet python


Sasanta
06-01-2017, 08:47
Ciao ragazzi ho un piccolo problema con python nelle pagine web. Allora io vorrei copiare i contenuti delle pagine web per esempio su wikipedia alla pagina di leonardo da Vinci vorrei copiare la vita,opere ecc... , quindi copiare il testo e non la struttura come mi è successo se uso la funzione urllib2. Ed inoltre vorrei copiare solo alcune parti distinguendole dal font della scrittura per esempio h1, h2 ecc... io ho gia provato questo programma ma mi copia solo la struttura del sito web, ma io vorrei copiare il contenuto per favore aiutatemi ed inoltre buon anno

pabloski
06-01-2017, 14:36
Quello che vuoi fare e' lo scraping delle pagine e Beautifulsoup e' lo strumento adatto.

Ovviamente sta a te dirgli come e dove prendere le varie componenti della pagina e salvarle in file/variabili differenti.

Sasanta
06-01-2017, 15:26
esatto ragazzi quello che voglio fare è un web crawling con tutte pagine di wikipedia e sto usando sia bs4 che requests come librerie.
Ho però dei problemini per la copia dei contenuti dei file e uso questo codice:
import urllib2
with open("culumn.txt","w") as f:
f.write(urllib2.urlopen("http://python.org/").read())
ma il contenuto del sito web non me lo copia :cry:
comunque alla fine è il web crawling il mio obiettivo ma questo insieme alla scelta dei contenuti da copiare è il mio problema più grande. Anche perche nel mio web crawling non sto inserendo eccezioni come try perche le pagine sono esistenti ed in formato HTML. Aiutatemi

Sasanta
06-01-2017, 15:29
Dovresti incollarci il codice per capire meglio come mai non ti funziona (magari inserendolo tra i tag CODE).

In ogni caso per la tesi io usai questa libreria che mi era risultata molto molto comoda:

https://www.crummy.com/software/BeautifulSoup/bs4/doc/#

Spero ti possa essere d'aiuto.
Grazie Coffee_killer ho letto il tuo link e devo dire che è un tesoro per il web crawling grazie:D

Sasanta
07-01-2017, 14:48
Felice di esserti stato d'aiuto :cool:
ciao Coffee, il link che mi hai mandato mi è stato utilissimo per capire il programma crawler scritto in un sito ora ti faccio la copia del codice:
import bs4
import requests

def estrapola_sorgente(url):
if 'http://' in url:
sorgente = requests.get(url).text
return(sorgente)
else:
return("L'url non è valido")

def estrapola_h1(sorgente):
soup = bs4.BeautifulSoup(sorgente)
elenco = soup.findAll('h1')
if elenco:
for a in elenco:
print(a)
else:
print("Non ci sono H1 in questa pagina")

lista_siti = [
'http://www.espertoseo.it',
'http://www.example.org',
'http://www.wired.it',
'http://www.python.org',
'http://www.w3.org',
]

for sito in lista_siti:
sorgente = estrapola_sorgente(sito)
print('Elenco degli H1 di ' + sito)
estrapola_h1(sorgente)
print()
ecco questo non è il mio codice ma l'ho prelevato da un sito, il codice l'ho capito, ma eseguendolo sul mio pc no mi funziona per esempio questa porzione di codice:
def estrapola_sorgente(url):
if 'http://' in url:
sorgente = requests.get(url).text
return(sorgente)
else:
return("L'url non è valido")
serve soltanto ad estrapolare il sorgente dal sito ma dentro URL non ci devo mettere l'indirizzo di wikipedia bensì nella lista_siti in basso vero??