我遇到过一些网站,当我尝试提取代码时,会返回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?
感谢您的帮助,我很感激。
答案 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}},使用它。保持合法的一面。