开发垂直搜索遇到一些问题,跪求高人解答
我在用heritrix开发一个给“大众点评网”定制的搜索引擎。
我可以在自己的FrontierScheduler里面得到正确的url,但为什么无法成功下载页面的镜像html文件,只是得到了许多文件属性为文件的文件,我把FrontierScheduler贴出来:
- Java code
package my.postprocessor;import java.util.logging.Logger;import org.archive.crawler.datamodel.CandidateURI;import org.archive.crawler.postprocessor.FrontierScheduler;public class FrontierSchedulerFordian extends FrontierScheduler { private static Logger LOGGER = Logger.getLogger(FrontierSchedulerFordian.class.getName()); public FrontierSchedulerFordian(String name) { super(name); } protected void schedule(CandidateURI caUri) { String url = caUri.toString(); System.out.println("后去处理1"+url); try { if (url.indexOf("www.dianping.com/shop/") != -1 || url.indexOf("www.dianping.com/search/category/16/10/g10") != -1 || url.endsWith(".gif") || url.endsWith(".jpg") || url.endsWith(".jpeg") || url.indexOf("robots.txt") != -1 || url.indexOf("dns:") != -1) { System.out.println("后去处理2"+url); if (url.indexOf("#") == -1) { getController().getFrontier().schedule(caUri); } } else { return; } } catch (Exception e) { e.printStackTrace(); } finally { } }}
真的不知道为什么,求高人指点@@
还有个小问题就是怎么样不被网站封ip啊,我今天爬数据的时候被网站给封了,说我访问网站速度过快,heritrix里面有没有什么比较特别的办法修补这个bug啊
[解决办法]
1.只是得到了许多文件属性为文件的文件
这句话不理解
2.getController().getFrontier().schedule(caUri);
只是选择你想要的URL让他们抓取,从你的代码来看:
所以你挑一些你想下载的URL用这个方法测试下看是否被它过滤掉了
3.被封IP很正常,毕竟现在爬虫泛滥。Heritrix可以配置代理,但一次只可以配置一个,同时代理的那个IP要保证速度和稳定,否则抓取很慢甚至抓取停止。
4.最好还是自己温柔抓取,Heritrix有相当好的机制来控制抓取速度。里面可以通过配置来管理你的抓取速度、宽带使用、抓取数量等
5.能说的只有这些,具体我博客里有些Heritrix的源码分析:http://guoyunsky.javaeye.com ,希望对你有用...