无论如何,作为我上一个问题的后续内容,我写了一个可以访问网站的小型网络浏览器。
基本抓取工具类,可以轻松快速地与一个网站进行互动。
覆盖“doAction(String URL,String content)”以进一步处理内容(例如存储,解析)。
Concept允许抓取工具的多线程。所有类实例共享已处理和排队的链接列表。
不是跟踪对象中已处理的链接和排队链接,而是可以建立JDBC连接以在数据库中存储链接。
目前一次仅限于一个网站,可以通过添加externalLinks堆栈并在适当时添加它来扩展。
JCrawler旨在用于快速生成XML站点地图或解析网站以获取所需信息。它很轻。
如果上述限制,这是编写爬虫的好方法吗?任何输入都会极大地帮助:)
http://pastebin.com/VtgC4qVE - Main.java
http://pastebin.com/gF4sLHEW - JCrawler.java
http://pastebin.com/VJ1grArt - HTMLUtils.java
答案 0 :(得分:5)
您的抓取工具似乎不会以任何方式尊重robots.txt,并使用假的User-Agent
字符串来展示它就像是一个webbrowser。这可能导致将来出现法律问题。请记住这一点。
答案 1 :(得分:2)
我已经在我的公司编写了一个自定义网络爬虫,我按照你提到的类似步骤进行操作,我发现它们很完美。我想说的唯一一个附加组件是它应该有一个轮询频率来抓取一段时间。
因此它应遵循“观察者”设计模式,以便在一定时间后在给定网址上找到任何新更新后,它将更新或写入文件。
答案 2 :(得分:0)
我建议将开源JSpider作为您的抓取工具项目的起点,它涵盖了网络抓取工具的所有主要问题,包括robots.txt,并且有一个插件方案,您可以使用它来应用您自己的任务到它访问的每个页面。
这是对JSpider的简短而略微过时的评论。围绕这一页的页面回顾了其他几个Java蜘蛛应用程序。