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

时间:2015-01-04 06:34:26

标签: python web-scraping mechanize scrape

我遇到过一些网站,当我尝试提取代码时,会返回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

我仍然得到相同的ROBOTs metatag。我添加标题是错误的,还是我只是卡在CAPTCHA?

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

1 个答案:

答案 0 :(得分:1)

据我所知,set_handle_robots()只是遵循robots.txt中列出的规则:

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

顺便说一句,你应该尊重并成为一个优秀的网络抓狂公民。


但是,他们对网络抓取非常严格 - 你很容易陷入验证码 - 请小心。仅供参考,它们受Incapsula保护,"Terms of Use"具有高级Bot Protection

  

使用先进的客户分类技术,众包和   基于声誉的技术,Incapsula区分“好”   和“坏”的机器人流量。这可以让你阻止刮刀,漏洞   扫描仪和评论垃圾邮件发送者,使您的服务器过载并窃取   你的内容,同时允许搜索引擎和其他合法的   自由访问您网站的服务。

另一个重要的“FYI”,引自official API

  

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

这导致了我的实际答案:提供了{{3}},使用它。保持合法的一面。