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

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

Ricardo Oliveira Pinheiro
ROP

(usa Ubuntu)

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-bluetooth'
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.


  


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

Perfil removido
removido

(usa Nenhuma)

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?

Ricardo Oliveira Pinheiro
ROP

(usa Ubuntu)

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-bluetooth'
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?

shoujo
shoujo

(usa Slackware)

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-bluetooth'
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?

Ricardo Oliveira Pinheiro
ROP

(usa Ubuntu)

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-bluetooth'
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?

shoujo
shoujo

(usa Slackware)

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?

Ricardo Oliveira Pinheiro
ROP

(usa Ubuntu)

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?

Lisandro Guerra
Lisandro

(usa Arch Linux)

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






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts