[Python-es] obtener codigo html de una pagina de internet
Moises Brenes
moises.brenes en gmail.com
Mar Mar 1 22:32:30 CET 2011
On 1 March 2011 15:25, (P en vel) <pdlopez en uci.cu> wrote:
> El codigo de la pagina me da el siguiente error
>
> Traceback (most recent call last):
> File "prueba4.py", line 34, in <module>
> open_url_installed_opener()
> File "prueba4.py", line 26, in open_url_installed_opener
> urllib2.urlopen(uri)
> File "/usr/lib/python2.6/urllib2.py", line 126, in urlopen
> return _opener.open(url, data, timeout)
> File "/usr/lib/python2.6/urllib2.py", line 397, in open
> response = meth(req, response)
> File "/usr/lib/python2.6/urllib2.py", line 510, in http_response
> 'http', request, response, code, msg, hdrs)
> File "/usr/lib/python2.6/urllib2.py", line 435, in error
> return self._call_chain(*args)
> File "/usr/lib/python2.6/urllib2.py", line 369, in _call_chain
> result = func(*args)
> File "/usr/lib/python2.6/urllib2.py", line 518, in http_error_default
> raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
> urllib2.HTTPError: HTTP Error 403: Forbidden
>
Que clase de autenticacion requiere?
> On 1 March 2011 14:08, (P en vel) <pdlopez en uci.cu> wrote:
>> Este codigo me funciona para una pagina local, o que no requiera proxy.
>>
>> import urllib
>> f = urllib.urlopen("http://intranet.hlg.uci.cu")
>> data = f.read()
>> f.close()
>> print data
>>
>>
>> Pero como yo me conecto a internet mediante un proxy trate con esto
>>
>> import urllib
>> proxies = {'http': 'http://100.0.0.1:3128'}
>> f = urllib.urlopen("http://www.google.com",proxies=proxies)
>> data = f.read()
>> f.close()
>> print data
>>
>> y me da el siguiente error
>> raceback (most recent call last):
>> File "/home/pavel/workspace/spider/src/prueba3.py", line 6, in <module>
>> f = urllib.urlopen("http://www.google.com",proxies=proxies)
>> File "/usr/lib/python2.6/urllib.py", line 86, in urlopen
>> return opener.open(url)
>> File "/usr/lib/python2.6/urllib.py", line 205, in open
>> return getattr(self, name)(url)
>> File "/usr/lib/python2.6/urllib.py", line 360, in open_http
>> return self.http_error(url, fp, errcode, errmsg, headers)
>> File "/usr/lib/python2.6/urllib.py", line 373, in http_error
>> result = method(url, fp, errcode, errmsg, headers)
>> File "/usr/lib/python2.6/urllib.py", line 703, in http_error_407
>> errcode, errmsg, headers)
>> File "/usr/lib/python2.6/urllib.py", line 383, in http_error_default
>> raise IOError, ('http error', errcode, errmsg, headers)
>> IOError: ('http error', 407, 'Proxy Authentication Required',
>> <httplib.HTTPMessage instance at 0x93f4e6c>)
>>
>
> usa urllib2 con el cual puedes agregar autenticacion:
>
> http://www.wkoorts.com/wkblog/2008/10/27/python-proxy-client-connections-requiring-authentication-using-urllib2-proxyhandler/
>
--
http://blog.mbrenes.com
Debian debian.org - The Universal Operating System.
El individuo ha luchado siempre para no ser absorbido por la tribu.
Si lo intentas, a menudo estarás solo, y a veces asustado.
Pero ningún precio es demasiado alto por el privilegio de ser uno mismo
- Friedrich Nietzsche.
Más información sobre la lista de distribución Python-es