Pular para o conteúdo

Código com erro relacionado a biblioteca urllib, como consertar?

Responder tópico
  • Denunciar
  • Indicar

1. Código com erro relacionado a biblioteca urllib, como consertar?

Enviado em 30/01/2016 - 02:07h

Olá pessoal do VOL, escrevi um código python no qual queria que ele consultasse o preço de um fone de ouvido e imprimisse na tela, porém me deparei com esse erro que nunca tinha visto antes, se alguém puder me explicar o que aconteceu e me mostrar a solução agradeço desde já!!! Aí está o código e em seguida o erro:

import urllib.request
import json

url = 'http://www.americanas.com.br/produto/122339264/fone-de-ouvido-com-microfone-aquarius-headphone-preto...;
fonte = urllib.request.urlopen(url).read()
html = str(json.loads(fonte.decode('utf-8')))
file = open('codigo.txt', 'w')
file.write(html)
texto = file.read()
tag = ('R$')
x = texto.find(tag)
while '{' in texto[x:x + 4]:
texto = texto[x + 4:]
x = texto.find(tag)
z = texto.find(',')
print (texto[:z+3])

Traceback (most recent call last):
File "/home/whr/Documentos/teste 3.py", line 5, in <module>
fonte = urllib.request.urlopen(url).read()
File "/usr/lib/python3.4/urllib/request.py", line 161, in urlopen
return opener.open(url, data, timeout)
File "/usr/lib/python3.4/urllib/request.py", line 469, in open
response = meth(req, response)
File "/usr/lib/python3.4/urllib/request.py", line 579, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib/python3.4/urllib/request.py", line 507, in error
return self._call_chain(*args)
File "/usr/lib/python3.4/urllib/request.py", line 441, in _call_chain
result = func(*args)
File "/usr/lib/python3.4/urllib/request.py", line 587, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden


OBS.: O código que originou esse erro contem a identação correta, por algum motivo ela não aparece aqui.

Responder tópico

2. Re: Código com erro relacionado a biblioteca urllib, como consertar?

Enviado em 30/01/2016 - 04:52h

Para a indentação correta você precisa colocar o código entre abre code e fecha code: [ code ] e [ /code ] sem esses espaços dentro dos colchetes. Tem um botão no formulário do tópico com o ícone </>. Se você selecionar o tópico com o mouse e clicar no botão com esse ícone seu código fica indentado certinho

Sem indentação não dá prá descobrir onde começa e onde termina o while. Além disso falta o arquivo codigo.txt. Tentei testar por aqui mas faltam informações sobre esse seu projeto.

----------------------------------------------------------------------------------------------------------------
http://24.media.tumblr.com/tumblr_m62bwpSi291qdlh1io1_250.gif

# apt-get purge systemd

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden

3. Re: Código com erro relacionado a biblioteca urllib, como consertar?

Enviado em 30/01/2016 - 18:11h

listeiro_037 escreveu:

Para a indentação correta você precisa colocar o código entre abre code e fecha code: [ code ] e [ /code ] sem esses espaços dentro dos colchetes. Tem um botão no formulário do tópico com o ícone </>. Se você selecionar o tópico com o mouse e clicar no botão com esse ícone seu código fica indentado certinho

Sem indentação não dá prá descobrir onde começa e onde termina o while. Além disso falta o arquivo codigo.txt. Tentei testar por aqui mas faltam informações sobre esse seu projeto.

----------------------------------------------------------------------------------------------------------------
http://24.media.tumblr.com/tumblr_m62bwpSi291qdlh1io1_250.gif

# apt-get purge systemd

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden


O codigo a seguir faz a msm coisa:

import urllib.request
import json

url = 'http://www.americanas.com.br/produto/122339264/fone-de-ouvido-com-microfone-aquarius-headphone-preto...;
fonte = urllib.request.urlopen(url).read()
html = str(json.loads(fonte.decode('utf-8')))
tag = ('R$')
x = html.find(tag)
while '{' in html[x:x + 4]:
html = html[x + 4:]
x = html.find(tag) #fim do while
z = html.find(',')
print (html[:z+3])

4. Re: Código com erro relacionado a biblioteca urllib, como consertar?

Enviado em 30/01/2016 - 22:22h

WHAmazonAnonymou escreveu:

listeiro_037 escreveu:

Para a indentação correta você precisa colocar o código entre abre code e fecha code: [ code ] e [ /code ] sem esses espaços dentro dos colchetes. Tem um botão no formulário do tópico com o ícone </>. Se você selecionar o tópico com o mouse e clicar no botão com esse ícone seu código fica indentado certinho

Sem indentação não dá prá descobrir onde começa e onde termina o while. Além disso falta o arquivo codigo.txt. Tentei testar por aqui mas faltam informações sobre esse seu projeto.

----------------------------------------------------------------------------------------------------------------
http://24.media.tumblr.com/tumblr_m62bwpSi291qdlh1io1_250.gif

# apt-get purge systemd

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden


O codigo a seguir faz a msm coisa:

import urllib.request
import json

url = 'http://www.americanas.com.br/produto/122339264/fone-de-ouvido-com-microfone-aquarius-headphone-preto...;
fonte = urllib.request.urlopen(url).read()
html = str(json.loads(fonte.decode('utf-8')))
tag = ('R$')
x = html.find(tag)
while '{' in html[x:x + 4]:
html = html[x + 4:]
x = html.find(tag) #fim do while
z = html.find(',')
print (html[:z+3])


Primeiro nao existe request, corrija isso

import urllib.request <-- esta errado
o certo é
import urllib


Depois corrija isso

fonte = urllib.urlopen(url).read()


E outra coisa, essa url que vc citou nao é um json, ela é um html normal, seu codigo nao irá funcionar

5. Re: Código com erro relacionado a biblioteca urllib, como consertar?

Enviado em 31/01/2016 - 00:47h

shoujo escreveu:

WHAmazonAnonymou escreveu:

listeiro_037 escreveu:

Para a indentação correta você precisa colocar o código entre abre code e fecha code: [ code ] e [ /code ] sem esses espaços dentro dos colchetes. Tem um botão no formulário do tópico com o ícone </>. Se você selecionar o tópico com o mouse e clicar no botão com esse ícone seu código fica indentado certinho

Sem indentação não dá prá descobrir onde começa e onde termina o while. Além disso falta o arquivo codigo.txt. Tentei testar por aqui mas faltam informações sobre esse seu projeto.

----------------------------------------------------------------------------------------------------------------
http://24.media.tumblr.com/tumblr_m62bwpSi291qdlh1io1_250.gif

# apt-get purge systemd

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden


O codigo a seguir faz a msm coisa:

import urllib.request
import json

url = 'http://www.americanas.com.br/produto/122339264/fone-de-ouvido-com-microfone-aquarius-headphone-preto...;
fonte = urllib.request.urlopen(url).read()
html = str(json.loads(fonte.decode('utf-8')))
tag = ('R$')
x = html.find(tag)
while '{' in html[x:x + 4]:
html = html[x + 4:]
x = html.find(tag) #fim do while
z = html.find(',')
print (html[:z+3])


Primeiro nao existe request, corrija isso

import urllib.request <-- esta errado
o certo é
import urllib


Depois corrija isso

fonte = urllib.urlopen(url).read()


E outra coisa, essa url que vc citou nao é um json, ela é um html normal, seu codigo nao irá funcionar


Agora ta dando esse erro no mesmo código com as mesmas adaptações que você citou: AttributeError: 'module' object has no attribute 'urlopen'

6. Re: Código com erro relacionado a biblioteca urllib, como consertar?

Enviado em 31/01/2016 - 01:12h

qual a versão do python voce esta usando?

7. Re: Código com erro relacionado a biblioteca urllib, como consertar?

Enviado em 31/01/2016 - 02:28h

shoujo escreveu:

qual a versão do python voce esta usando?


3.4.3

8. Re: Código com erro relacionado a biblioteca urllib, como consertar?

Enviado em 06/07/2016 - 12:09h

Tem 2 problemas a parte de json me parece desnecessária e o site das americanas parece estar verificando se a reuisição vem de um navegador comercial.
Veja que trocando para outro site e comentando a parte do json o programa roda:

#!/usr/bin/env python3

import urllib.request
import json

url = 'http://python.org/';
html = str(urllib.request.urlopen(url).read())
#html = str(json.loads(fonte.decode('utf-8')))
tag = ('R$')
x = html.find(tag)
while '{' in html[x:x + 4]:
html = html[x + 4:]
x = html.find(tag) #fim do while
z = html.find(',')
print (html[:z+3])


Abraço

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder