绕过ROBOTS规则,转向页面抓取配置,内容大小限制
来源:互联网 发布:视频编辑专家软件下载 编辑:程序博客网 时间:2024/06/11 05:05
1. 如何绕过目标站点的robots.txt限制
多数站点都是只允许百度、google等搜索引擎抓取的,所以会在robots.txt里限制其他爬虫。
nutch自然是会遵循robots协议的,但是我们可以通过修改nutch源码来绕过限制。
相关代码位于(nutch版本1.5.1,其他版本未测试):
org.apache.nutch.fetcher.Fetcher的run方法.
2. url掉转导致html parse不成功的问题 在抓取百度百科的景点数据时,发现部分页面不会走html parse部分的逻辑,而我的plugin是基于HtmlParserFilter扩展点的,因而没有生效。
用来限制抓取内容的大小,放大10倍后,问题解决。
两个配置用于的协议不同,前者是http协议,后者是file协议,我一开始就配置错了,折腾了半天。。。
PS:最后推荐两篇介绍nutch的文章,在官方文档不那么给力的情况下,这两篇文章给了我不小的帮助,感谢下作者。
http://www.atlantbh.com/apache-nutch-overview/ 对nutch的整体流程做了介绍
http://www.atlantbh.com/precise-data-extraction-with-apache-nutch/ 用实际例子介绍了nutch plugin的开发和部署
多数站点都是只允许百度、google等搜索引擎抓取的,所以会在robots.txt里限制其他爬虫。
nutch自然是会遵循robots协议的,但是我们可以通过修改nutch源码来绕过限制。
相关代码位于(nutch版本1.5.1,其他版本未测试):
org.apache.nutch.fetcher.Fetcher的run方法.
找到以下几行代码并注释掉就OK了。
if (!rules.isAllowed(fit.u)) { // unblock fetchQueues.finishFetchItem(fit, true); if (LOG.isDebugEnabled()) { LOG.debug("Denied by robots.txt: " + fit.url); } output(fit.url, fit.datum, null, ProtocolStatus.STATUS_ROBOTS_DENIED, CrawlDatum.STATUS_FETCH_GONE); reporter.incrCounter("FetcherStatus", "robots_denied", 1); continue; }
2. url掉转导致html parse不成功的问题 在抓取百度百科的景点数据时,发现部分页面不会走html parse部分的逻辑,而我的plugin是基于HtmlParserFilter扩展点的,因而没有生效。
后来发现请求部分页面的链接返回的http状态为301,跳转之后才会到真正页面,而nutch默认是不会抓取跳转后的页面的.这时需要修改nutch-site.xml,加入以下配置即可,nutch-default.xml里的默认值是0,我们这里改成一个大于0的值,nutch就会继续抓取跳转后的页面了。
<property> <name>http.redirect.max</name> <value>2</value> <description>The maximum number of redirects the fetcher will follow when trying to fetch a page. If set to negative or 0, fetcher won't immediately follow redirected URLs, instead it will record them for later fetching. </description></property>
3. 抽取的过程中发现某些属性老是抽不到,而在不使用nutch抓取的情况下是能抽到的,进而怀疑nutch抓取的页面不全。于是去google了一下"nutch content limit",发现nutch有这么一个配置项:
<property> <name>http.content.limit</name> <value>65536</value> <description>The length limit for downloaded content using the http:// protocol, in bytes. If this value is nonnegative (>=0), content longer than it will be truncated; otherwise, no truncation at all. Do not confuse this setting with the file.content.limit setting. </description></property>
用来限制抓取内容的大小,放大10倍后,问题解决。
需要注意的是nutch还有一个很容易混淆的配置项:
<property> <name>file.content.limit</name> <value>65536</value> <description>The length limit for downloaded content using the file:// protocol, in bytes. If this value is nonnegative (>=0), content longer than it will be truncated; otherwise, no truncation at all. Do not confuse this setting with the http.content.limit setting. </description></property>
两个配置用于的协议不同,前者是http协议,后者是file协议,我一开始就配置错了,折腾了半天。。。
PS:最后推荐两篇介绍nutch的文章,在官方文档不那么给力的情况下,这两篇文章给了我不小的帮助,感谢下作者。
http://www.atlantbh.com/apache-nutch-overview/ 对nutch的整体流程做了介绍
http://www.atlantbh.com/precise-data-extraction-with-apache-nutch/ 用实际例子介绍了nutch plugin的开发和部署
- 绕过ROBOTS规则,转向页面抓取配置,内容大小限制
- Jsoup抓取页面内容
- 如何使用robots.txt防止搜索引擎抓取页面
- jsp简单抓取页面内容
- 如何抓取网站页面内容
- 绕过限制,在PC上调试微信手机页面
- NGINX 配置404错误页面转向
- NGINX 配置404错误页面转向
- NGINX 配置404错误页面转向
- NGINX 配置404错误页面转向
- NGINX 配置404错误页面转向
- NGINX 配置404错误页面转向
- NGINX 配置404错误页面转向
- 配置Nutch模拟浏览器以绕过反爬虫限制
- 用Python实现页面内容抓取
- 用C#抓取AJAX页面的内容
- .net 抓取页面内容查询IP
- asp.net抓取目标页面内容
- win8开发 常用的布局控件
- XP无法访问Win7文件解决方法
- 第51天的交易(2013-6-7)(-100)(-250) (又是一个失望的非农夜)
- 当前打开命令cmd
- XP系统开机自动拨号连接设置
- 绕过ROBOTS规则,转向页面抓取配置,内容大小限制
- 智能手机中显示信号强度格数
- jdbc介绍
- 开放封闭原则
- 编译产生debug以及release版本 autotool工具
- Ubuntu 安装VirtualBox
- uCOS入门视频教程
- 如何实现性能测试相关性?
- 【转】移植uboot