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

40
demandé sur Diego 2010-05-17 04:35:43

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?

14
répondu Alex Martelli 2010-05-17 00:40:27

oh, vous devez ignorer les robots.txt

br = mechanize.Browser()
br.set_handle_robots(False)
186
répondu Yuda Prawira 2010-10-03 13:02:38

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).

5
répondu wisty 2016-03-16 15:21:41

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
3
répondu Vladislav 2017-04-20 22:16:41

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.

2
répondu Tom 2010-07-11 23:17:11

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)
1
répondu Stefan Kendall 2010-05-17 00:39:51

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?

0
répondu Steve Robillard 2010-05-17 00:40:48

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.

0
répondu BrunoLM 2010-05-17 00:41:33