2011-12-15 13 views
6

Sto lavorando con il modulo Mechanize di Python. Ho incontrato 3 diversi siti che non possono essere aperti da mechanize direttamente:Python Mechanize non aprirà questi siti

  1. en.wikipedia.org/wiki/Dog (nuovo utente, non possono inserire più di 2 collegamenti TT)
  2. https://www.google.com/search?num=100&hl=en&site=&q=dog&oq=dog&aq=f&aqi=g10&aql=1&gs_sm=e&gs_upl=618l914l0l1027l3l2l0l0l0l0l173l173l0.1l1l0
  3. http://www.cpsc.gov/cpscpub/prerel/prhtml03/03059.html

    import mechanize 
    br = mechanize.Browser() 
    br.set_handle_robots(False) 
    

aggiungendo il seguente codice permette meccanizzare per aprire e analizzare l'articolo di Wikipedia e il risultato di ricerca di Google s:

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')] 

Ma, le mie soluzioni alternative non sono partita per il sito web CPSC.gov - quando provo ad aprirlo con il browser Mechanize, i miei si blocca pitone - al punto che non riesco nemmeno a tastiera interromperlo .

Cosa sta succedendo qui?

risposta

14

Nel caso del sito cpsc.gov, sembra che ci sia un'intestazione refresh che non viene elaborata correttamente da mechanize HTTPRefreshProcessor. Tuttavia, è possibile risolvere il problema nel modo seguente:

import mechanize 

url = 'http://www.cpsc.gov/cpscpub/prerel/prhtml03/03059.html' 
br = mechanize.Browser() 
br.set_handle_refresh(False) 
br.open(url) 
+0

Sei un capo! Posso chiederti come hai saputo la risposta alla mia domanda? –

+2

Ho notato che era possibile aprire l'url con 'urllib2.urlopen' e con' mechanize.urlopen'. Successivamente ho confrontato i gestori di ciascun opener ('urllib2._opener',' mechanize._opener' e 'mechanize.Browser()') e ho esaminato le tracce da [HttpFox] (https://addons.mozilla.org)/en-US/firefox/addon/HttpFox /). Dopo alcuni tentativi, ho scoperto che la rimozione del processore di aggiornamento era la soluzione giusta. – jcollado

+0

Rispetto. Grazie ancora :) –

Problemi correlati