Domanda

Se io punto a Firefox http://bitbucket.org/tortoisehg/stable/ wiki / home / ReleaseNotes , ottengo una pagina di HTML. Ma se provo questo in Python:

import urllib

site = 'http://bitbucket.org/tortoisehg/stable/wiki/Home/ReleaseNotes'
req = urllib.urlopen(site)
text = req.read()

ottengo il seguente:

500 Internal Server Error Il server ha rilevato un errore interno o una configurazione errata e non è riuscito a completare la richiesta.

Che cosa sto facendo di sbagliato?

È stato utile?

Soluzione

Non state facendo nulla di male, bitbucket fa alcune rilevamento user agent (per rilevare i clienti mercuriali per esempio). Basta cambiando l'user agent fissa (se non ha urllib come una stringa).

Si dovrebbe compilare un problema per quanto riguarda questo: http://bitbucket.org/jespern/ bitbucket / temi / new /

Altri suggerimenti

Si sta facendo nulla di male, in superficie, e come la pagina di errore dice che si dovrebbe contattare gli amministratori del sito, perché sono quelli con i log del server che possono spiegare quello che sta succedendo. Per fortuna, gli amministratori del sito di bitbucket sono un gruppo amichevole!

Non c'è dubbio che v'è una certa intestazione o una combinazione di intestazioni che i browser impostati in un modo, urllib imposta in un altro modo, e un bug nel server ottiene solleticato in quest'ultimo caso. Si consiglia di vedere esattamente ciò che le intestazioni vengono inviati ad esempio con Firebug in Firefox, e si riproducono quelli fino a isolare esattamente il bug del server; molto probabilmente sarà l'user agent o qualche "accettare" intestazione -ish che sta solleticando quel bug.

Non credo che stai facendo qualcosa di sbagliato - sembra che questo server era in fondo? Lo script ha funzionato bene per me ( 'testo' conteneva gli stessi dati che visualizzato nel browser).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top