3 votes

Erreur HTTP du Web Crawler 403:Forbidden (interdit)

Je suis un débutant qui essaie d'écrire un script d'un web spider. Je veux aller sur une page, entrer une donnée dans une zone de texte, aller à la page suivante en cliquant sur le bouton soumettre et récupérer toutes les données sur la nouvelle page, itérativement .

Voici le code que j'essaie d'utiliser :

import urllib
import urllib2
import string
import sys
from BeautifulSoup import BeautifulSoup

hdr = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3','Accept-Encoding': 'none','Accept-Language': 'en-US,en;q=0.8','Connection': 'keep-alive'}
values = {'query' : '5ed10c844ed4266a18d34e2ba06b381a' }
data = urllib.urlencode(values)
request = urllib2.Request("https://www.virustotal.com/#search", data, headers=hdr)
response = urllib2.urlopen(request)
the_page = response.read()
pool = BeautifulSoup(the_page)

print pool

L'erreur est la suivante :

Traceback (most recent call last):
File "C:\Users\Dipanshu\Desktop\webscraping_demo.py", line 19, in <module>
response = urllib2.urlopen(request)
File "C:\Python27\lib\urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "C:\Python27\lib\urllib2.py", line 406, in open
response = meth(req, response)
File "C:\Python27\lib\urllib2.py", line 519, in http_response
'http', request, response, code, msg, hdrs)
File "C:\Python27\lib\urllib2.py", line 444, in error
return self._call_chain(*args)
File "C:\Python27\lib\urllib2.py", line 378, in _call_chain
result = func(*args)
File "C:\Python27\lib\urllib2.py", line 527, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
HTTPError: HTTP Error 403: Forbidden

Comment puis-je résoudre ce problème ?

1voto

Dane Lee Points 501
from bs4 import BeautifulSoup
import urllib.request

user_agent = 'Mozilla/5.0'
headers = {'User-Agent': user_agent }
target_url = 'https://www.google.co.kr/search?q=cat&source=lnms&tbm=isch&sa=X&ved=0ahUKEwjtrZCg7uXbAhVaUd4KHc2HDgIQ_AUICygC&biw=1375&bih=842'

request = urllib.request.Request( url=target_url, headers=headers )
req = urllib.request.urlopen(request)
soup = BeautifulSoup(req.read(), 'html.parser')

target_url : page de recherche google pour "chat".

"headers" vous permettra de passer outre l'erreur "Forbidden". Ce code

0voto

NlightNFotis Points 2689

D'après ce que je comprends, votre request ne sont pas configurés correctement, et conduisent (peut-être) votre spider vers une page que vous ne devriez pas voir.

Cet utilisateur a rencontré un problème similaire, mais l'a résolu en modifiant les en-têtes. .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X