Ho lavorato su qualche codice Python per poter ottenere collegamenti a account di social media da siti web governativi, per una ricerca semplificata con cui i comuni possono essere contattati. Sono riuscito ad adattare un codice per lavorare in 2.7, che stampa tutti i collegamenti a facebook, twitter, linkedin e google + presenti su un determinato sito Web di input. Il problema che sto attualmente sperimentando è che non cerco link su un'unica pagina web, ma su un elenco di circa 200 siti Web, ho un file Excel. Non ho esperienza con l'importazione di questo tipo di elenchi in Python, quindi mi chiedevo se qualcuno potesse dare un'occhiata al codice e suggerire un modo corretto per impostare tutte queste pagine web come base_url, se possibile;Utilizzo di più pagine Web in un raschiatore web
import cookielib
import mechanize
base_url = "http://www.amsterdam.nl"
br = mechanize.Browser()
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
br.set_handle_robots(False)
br.set_handle_equiv(False)
br.set_handle_redirect(True)
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
br.addheaders = [('User-agent',
'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
page = br.open(base_url, timeout=10)
links = {}
for link in br.links():
if link.url.find('facebook')>=0 or link.url.find('twitter')>=0 or link.url.find('linkedin')>=0 or link.url.find('plus.google')>=0:
links[link.url] = {'count': 1, 'texts': [link.text]}
# printing
for link, data in links.iteritems():
print "%s - %s - %s - %d" % (base_url, link, ",".join(data['texts']), data['count'])
Ok, ha senso, per aggiungere tutti i collegamenti a un elenco, grazie. Viene fornito un errore che ho riscontrato con il tuo codice; 'Traceback (chiamata più recente scorso): file "C: \ Users \ Stefan \ Documenti \ Progetto di Ricerca GRS 50806 \ preesistente dati \ Test - kopie.py", linea 11, in data.links (lista (csv_reader)) NameError: nome 'data' non definito ' C'è un modo per definire i dati come sintassi valida? –
@ StefanFörch mio male, quando ho modificato la risposta non ho modificato tutte le istanze della lista 'link'. Lo sto modificando ora. Quella linea è quella di aggiungere l'elenco dei collegamenti alla lista vuota precedentemente definita per essere utilizzata in seguito. – Bhargav
Ok, grazie molte, il codice che aggiunge gli elementi dal file CSV a un elenco sembra funzionare, dal momento che 'print lists' dà' [['http://www.amsterdam.nl/', 'http : //www.rotterdam.nl/ ',' http://www.denhaag.nl/ ',' http://www.utrecht.nl ']] '. Tuttavia, quando si utilizza l'intero codice, non sembra funzionare. Presumo che questo potrebbe avere qualcosa a che fare con il formato del link, tuttavia, non vedo come il documento debba essere formattato, ad es. dovrebbero essere usate virgolette, dovrebbe essere una lista con valori in una singola colonna, ecc.? –