wind-bell 风铃虫是一款轻量级的爬虫工具,似风铃一样灵敏,如蜘蛛一般敏捷,能感知任何细小的风吹草动,轻松抓取互联网上的内容。它是一款对目标服务器相对友好的蜘蛛程序,内置了二十余种常见或不常见的浏览器标识,能够自动处理cookie和网页来源信息,轻松绕过服务器限制,智能调整请求间隔时间,动态调整请求频率,防止对目标服务器造成干扰。此外,风铃虫还是一款对普通用户十分友好的工具,它提供的大量链接提取器和内容提取器让用户可以随心所欲地快速配置,甚至于只要提供一个开始请求地址就能配置出自己爬虫程序。同时,风铃虫也开放了许多自定义接口,让高级用户能够根据需要自定义爬虫功能。最后,风铃虫还天然支持分布式和集群功能,让你突破单机环境的束缚,释放出你的爬虫能力。可以说,风铃虫几乎能抓取目前所有的网站里的绝大部分内容。
【声明】 请勿将风铃虫应用到任何可能会违反法律规定和道德约束的工作中,请友善使用风铃虫,遵守蜘蛛协议,不要将风铃虫用于任何非法用途。如您选择使用风铃虫即代表您遵守此协议,作者不承担任何由于您违反此协议带来任何的法律风险和损失,一切后果由您承担。
快速使用
<dependency> <groupId>com.yishuifengxiao.common</groupId> <artifactId>crawler</artifactId> <version>替换为最新的版本号</version> </dependency>
简单使用
提取雅虎财经的内容页的电子货币的名字
//创建一个提取规则 //该提取规则标识使用 XPATH提取器进行提取, //该XPATH提取器的XPATH表达式为 //h1/text() , 该提取提取器的作用顺序是0 FieldExtractRule extractRule = new FieldExtractRule(Rule.XPATH, "//h1/text()", "", 0); //创建一个提取项 ContentItem contentItem = new ContentItem(); contentItem .setFiledName("name") //提取项代码,不能为空 .setName("加密电子货币名字") //提取项名字,可以不设置 .setRules(Arrays.asList(extractRule)); //设置提取规则 //创建一个风铃虫实例 Crawler crawler = CrawlerBuilder.create() .startUrl("https://hk.finance.yahoo.com/cryptocurrencies") //风铃虫的起始链接 // 风铃虫会将每次请求的网页的内容中的URL先全部提取出来,然后将完全匹配此规则的链接放入链接池 // 如果不设置则表示提取链接中所有包含域名关键字(例如此例中的ifeng)的链接放入链接池 //链接池里的链接会作为下次抓取请求的种子链接 .addLinkRule("https://hk.finance.yahoo.com/quote/.+")//链接提取规则,多以添加多个链接提取规则, //可以设置多个内容页的规则,多个内容页规则之间用半角逗号隔开 //只要内容页URL中完全匹配此规则就进行内容提取,如果不设置标识提取域名下所有的链接 .extractUrl("https://hk.finance.yahoo.com/quote/.+") //内容页的规则, //风铃虫可以设置多个提取项,这里为了演示只设置了一个提取项 .addExtractItem(contentItem) //增加一个提取项 //如果不设置则使用默认时间10秒,此值是为了防止抓取频率太高被服务器封杀 .interval(3)//每次进行爬取时的平均间隔时间,单位为秒, .creatCrawler(); //启动爬虫实例 crawler.start(); // 这里没有设置信息输出器,表示使用默认的信息输出器 //默认的信息输出器使用的logback日志输出方法,因此需要看控制台信息 //由于风铃虫时异步运行的,所以演示时这里加入循环 while (Statu.STOP != crawler.getStatu()) { try { Thread.sleep(1000 * 20); } catch (InterruptedException e) { e.printStackTrace(); } }
上述例子的作用提取雅虎财经的内容页的电子货币的名字,如果用户想要提取其他信息,只需要按照规则配置好其他的提取规则即可。
注意 上述示例仅供学习演示所用,风铃虫使用者在抓取网页内容请严格遵守相关的法律规定和目标网站的蜘蛛协议
风铃虫原理
风铃虫的原理极为简单,主要由 资源调度器、网页下载器、链接解析器、内容解析器、信息输出器 这极大部分组成。
他们的作用与功能如下所示:
其中的链接解析器是由一系列的链接提取器组合而成,目前链接提取器主要是支持正则提取。
内容解析器由一系列的内容提取器组合而成,不同的内容提取器功能不同,适用于不同的解析场景,支持多个提取器的重复、循环等多种组合形式。
上述个组件均提供了自定义配置接口,使用户可以根据实际需要进行自定义配置,满足各种复杂乃至异常场景的要求。
风铃虫内置的内容提取器有:
在进行文本内容提取时,用户可以将这些提取器自由组合以提取出自己需要的内容,更多提取器的具体用法请参见 内容提取器用法。
风铃虫内置的浏览器标识有:
分布式支持
核心代码如下:
.... //省略其他代码 .... //创建redis资源调度器 Scheduler scheduler=new RedisScheduler("唯一的名字",redisTemplate) //创建一个redis资源缓存器 RequestCache requestCache = new RedisRequestCache(redisTemplate); crawler .setRequestCache(requestCache) //设置使用redis资源缓存器 .setScheduler(scheduler); //设置使用redis资源调度器 .... //省略其他代码 .... //启动爬虫实例 crawler.start();
状态监控
风铃虫还提供了强大的状态监控和事件监控能力,通过 状态监听器和事件监听器,风铃虫让你对任务的运行情况了如指掌,实时掌控实例运行过程中遇到的各种问题,真正做到对任务的运行情况洞若观火,方便运维。
解析模拟器
由于风铃虫的解析功能十分强大,规定定义十分灵活,为了直观地了解已配置的规则定义的作用,风铃虫提供了解析模拟器,让使用者能够快速了解自己设置的规则定义的效果是否符合预期目标,及时调整规则定义,方便风铃虫实例的配置。
风铃虫平台效果演示
配置爬虫的名字、使用的线程数量和超时停止时间
2. 配置链接爬取信息
配置爬虫的起始种子链接和从网页里提取下一次抓取时的链接的提取规则
3. 配置站点信息
此步骤一般可以省略,但是对于某些会校验cookie和请求头参数的网站,此配置非常有用
4 提取项配置
配置需要从网站里提取出来的数据,例如新闻标题和网页正文等信息
5 属性提取配置
调用内容提取器进行任意组合,以根据需要提取出需要的数据
6 属性提取测试
提前检验提取项的配置是否正确,提取出来的数据是否符合预期目标
相关资源链接
有的时候,当我们的爬虫程序完成了,并且在本地测试也没有问题,爬取了一段时间之后突然就发现报错无法抓取页面内容了。这个时候,我们很有可能是遇到了网站的反爬虫拦截。 我们知道,网站一方面想要爬虫爬取网站,比如让搜索引擎爬虫去爬取网站的内容,来增加网站的搜索排名。另一方面,由于网站的服务器资源有限,过多的非真实的用户对网站的大量访问,会增加运营成本和服务器负担。 因此,有些网站会设置一些反爬虫的措施。我
问题内容: 编写新的工作流引擎还是使用现有的BPM引擎更好吗:jBPM 5,Activiti 5? 我的应用程序是基于Web的应用程序,性能非常重要。我的疑问是,与编写简单的工作流引擎相比,使用jBPM / Activiti是否会增加性能开销。 如果我采用自我实现,我会错过工作流程的可视化。为了性能,可以进行交易。 问题答案: 这确实取决于您的要求。首先,查看您是否真的需要工作流引擎(此资源或其他
本文向大家介绍python爬虫的工作原理,包括了python爬虫的工作原理的使用技巧和注意事项,需要的朋友参考一下 1.爬虫的工作原理 网络爬虫,即Web Spider,是一个很形象的名字。把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页的。从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址
这一章将会介绍使用一些新的模块(optparse,spider)去完成一个爬虫的web应用。爬虫其实就是一个枚举出一个网站上面的所有链接,以帮助你创建一个网站地图的web应用程序。而使用Python则可以很快的帮助你开发出一个爬虫脚本. 你可以创建一个爬虫脚本通过href标签对请求的响应内容进行解析,并且可以在解析的同时创建一个新的请求,你还可以直接调用spider模块来实现,这样就不需要自己去写
本文向大家介绍Java 爬虫工具Jsoup详解,包括了Java 爬虫工具Jsoup详解的使用技巧和注意事项,需要的朋友参考一下 Java 爬虫工具Jsoup详解 Jsoup是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。 jsoup 的主要功能如
根据使用场景,网络爬虫可分为 通用爬虫 和 聚焦爬虫 两种. 通用爬虫 通用网络爬虫 就是 捜索引擎抓取系统,目的是将互联网上的所有的网页下载到本地,形成一个互联网内容的镜像备份。 它决定着整个搜索引擎内容的丰富性和时效性,因此它的性能优劣直接影响着搜索引擎的效果。 通用搜索引擎(Search Engine)工作原理 第一步:抓取网页 搜索引擎网络爬虫的基本工作流程如下: 首先选取一部分的初始UR