机械化返回robot.txt,尽管被设置为忽略

问题描述 投票:0回答:1

我遇到过一些网站,当我尝试提取代码时会返回 ROBOTS 元标记,并且即使在尝试使用 Mechanize 时也会继续这样做。举个例子:

import mechanize
br = mechanize.Browser()
br.set_handle_robots(False)
br.open("http://myanimelist.net/anime.php?letter=B")
response = br.response().read()

我尝试过设置标头并设置其他句柄,但从未得到不是 ROBOTS 元标记的响应。

任何帮助将不胜感激,谢谢。

编辑:

尝试下面建议的标题:

import mechanize
url = "http://myanimelist.net/anime.php?letter=B"

br = mechanize.Browser()
br.set_handle_robots(False)
br.addheaders=[('User-Agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36     (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'),
       ('Host', 'myanimelist.net'),
       ('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'),
       ('Accept-Encoding', 'gzip, deflate, sdch'),
       ('Accept-Language', 'en-US,en;q=0.8,ru;q=0.6'),
       ('Cache-Control', 'max-age=0'),
       ('Connection', 'keep-alive')]
br.open(url)
response = br.response().read()
print response

我仍然得到相同的机器人元标签。我是否添加了错误的标题,或者我只是被验证码卡住了?

谢谢您的帮助,我很感激。

python web-scraping mechanize
1个回答
1
投票

据我了解

set_handle_robots()
只是遵守
robots.txt
中列出的规则:

def set_handle_robots(self, handle):
    """Set whether to observe rules from robots.txt."""

顺便说一句,你应该尊重这一点,并成为一名良好的网络抓取公民。


不过,他们对网络抓取非常严格 - 你很容易被验证码所设置 - 请小心。仅供参考,它们受到

Incapsula
的保护,它具有先进的
Bot Protection
:

采用先进的客户分类技术、众包和 基于声誉的技术,Incapsula 区分“好” 和“不良”机器人流量。这可以让您阻止抓取工具、漏洞 扫描仪和评论垃圾邮件发送者会使您的服务器超载并窃取信息 您的内容,同时允许搜索引擎和其他合法 免费访问您的网站的服务。

另一个重要的“仅供参考”,引用自“使用条款”

您同意不使用或启动任何自动化系统,包括未经授权的 限制、“机器人”、“蜘蛛”、“离线阅读器”等 以发送更多请求消息的方式访问服务 公司的服务器比人类在相同的时间内合理生产的服务器要多 使用传统的在线网络浏览器一段时间,并且您 同意不汇总或整理通过以下方式提供的任何内容 该服务在其他地方使用。您还同意不收集或 收集任何个人身份信息,包括帐户或 配置文件名称,来自服务或使用通信系统 本服务出于任何商业招揽目的而提供。

这导致了我的实际答案:提供了一个官方

API
,请使用它。遵守法律。

© www.soinside.com 2019 - 2024. All rights reserved.