Screen scraping: Getting around " erreur HTTP 403: requête rejetée par les robots.txt"
Est-il un moyen de contourner la suite?
httperror_seek_wrapper: HTTP Error 403: request disallowed by robots.txt
est le seul moyen de contacter le propriétaire du site (barnesandnoble.com je construis un site qui leur apporterait plus de ventes, Je ne sais pas pourquoi ils refuseraient l'accès à une certaine profondeur.
j'utilise mechanize et BeautifulSoup sur Python2.6.
l'espoir d'une solution
8 réponses
vous pouvez essayer de mentir à propos de votre agent utilisateur (par exemple, en essayant de faire croire que vous êtes un être humain et non un robot) Si vous voulez obtenir dans des problèmes juridiques possibles avec Barnes & Noble. Pourquoi ne pas plutôt communiquer avec leur service du développement des entreprises et les convaincre de vous autoriser en particulier? Ils sont sans doute juste essayer d'éviter de se faire racler leur site par certaines classes de robots tels que les moteurs de comparaison de prix, et si vous pouvez les convaincre que vous n'êtes pas un, signer un contrat, etc, ils peuvent bien être prêts à faire une exception pour vous.
une solution "technique" qui brise simplement leurs politiques telles qu'encodées dans les robots.txt est une approche à haut risque juridique que je ne recommanderais jamais. BTW, how leurs robots.txt lire?
oh, vous devez ignorer les robots.txt
br = mechanize.Browser()
br.set_handle_robots(False)
Mécaniser suit automatiquement les robots.txt, mais il peut être désactivé en supposant que vous avez la permission ,ou vous avez réfléchi à l'éthique..
mettez un drapeau dans votre navigateur:
browser.set_handle_equiv(False)
cela ignore les robots.txt.
de plus, assurez-vous d'étouffer vos requêtes, de sorte que vous ne mettez pas trop de charge sur leur site. (Remarque, cela rend également moins probable qu'ils vont détecter et de vous interdire).
Le code de demande:
br = mechanize.Browser()
br.set_handle_robots(False)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
resp = br.open(url)
print resp.info() # headers
print resp.read() # content
L'erreur que vous recevez n'est pas liée à l'agent de l'utilisateur. mécaniser par défaut les robots de contrôle.directives txt automatiquement lorsque vous l'utilisez pour naviguer vers un site. Utiliser le .set_handle_robots (false) méthode de mécanisation.navigateur pour désactiver ce comportement.
Définir votre User-Agent
en-tête correspondant à de vrais IE/FF User-Agent.
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; AskTB5.6)
sans en discuter l'éthique, vous pourriez modifier les en-têtes pour ressembler au googlebot par exemple, ou le googlebot est-il Bloqué aussi?
il semble Que vous avez à faire moins de travail pour contourner robots.txt
,au moins, dit cet article. Donc, vous pourriez avoir à supprimer un certain code pour ignorer le filtre.