2009-10-01 17 views
0

J'essaie d'interroger blackle.com pour les recherches, mais j'obtiens une erreur HTTP 403. Quelqu'un peut-il indiquer ce qui ne va pas ici?blackle.com requêtes

#!/usr/bin/env python 

import urllib2 
ss = raw_input('Please enter search string: ') 
response = "http://www.google.com/cse?cx=013269018370076798483:gg7jrrhpsy4&cof=FORID:1&q=" + ss + "&sa=Search" 
urllib2.urlopen(response) 
html = response.read() 

print html 

Répondre

2

HTTP 403 signifie « interdit » (voir here pour une bonne explication): google.com ne veut pas vous laisser accéder à cette ressource. Puisqu'il laisse les navigateurs y accéder, probablement il vous identifie en tant que robot (code automatisé, navigateur d'utilisateur non interactif), par l'intermédiaire de l'agent d'utilisateur vérifiant et semblable. Avez-vous vérifié robots.txt pour voir si vous DEVRIEZ être autorisé à accéder à ces URL? En http://www.google.com/robots.txt je vois une ligne:

Disallow: /cse? 

ce qui signifie que les robots ne sont pas autorisés ici. Voir here pour les explications de robots.txt, here pour le module de bibliothèque Python standard roboparser qui permet à un programme Python de comprendre facilement un fichier robots.txt.

Vous pourriez essayer de tromper la détection de "robots" par google par rapport aux humains, par ex. en falsifiant l'en-tête de votre user-agent et ainsi de suite, et peut-être vous vous en tireriez un moment, mais voulez-vous vraiment violer délibérément les conditions d'utilisation et vous disputer avec google ...?