网页爬虫技术的关键技术研究探索

2016-07-23 18:56刘寿臣
电脑知识与技术 2016年17期
关键词:多线程

刘寿臣

摘要:互联网技术的快速发展,使得网络上各种数据信息呈现出几何增长的趋势,以往搜索数据的工具越来越跟不上时代的潮流,查找效率低、成本高的缺陷日益凸显。爬虫技术实现所用到的算法是搜索引擎的关键技术, 算法性能的优良决定着搜索引擎的搜索精度和搜索效率。对于互联网中数据的数据量大、数据类型多、实时性要求高的特点,对各种爬虫算法的优缺点进行分析,该文设计使用多线程机制的爬虫算法,可以提高网页的查全率。

关键词:爬虫技术;网页挖掘;多线程

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2016)17-0016-02

1 引言

现今,社会经济生活的各个方面变得越来越“互联网化”,互联网式经济贸易逐渐取代传统的经济模式,互联网金融市场的快速发展,在我国的经济结构中形成了服务于互联网金融的主流经济模式。致使各大商业银行也更加积极地开创互联网经济方面的业务,也强化了实体经济的服务效率。

“互联网金融+”这个新兴事物越来越多地融入我们的生活,改变了我们以往的生活方式。现在流行的打车软件,以电子支付为交易方式,改变了传统的支付方式;网络银行的快速发展为我们提供了新的理财方式;P2P信贷使得我们的消费和贷款有了新的途径;众筹产业的发展让每个人都可以参与到创新新模式中来,这些新的变化改变着我们的生活,使得我们生活增添了新的色彩,互联网金融在未来会越来越成为主流。

网络技术的快速发展,使得网络上各种重要的数据信息越来越多,互联网金融领域的发展也更加依赖于网络来获取重要的数据信息,以供研究发展。在互联网中,时时刻刻都有各式各样的金融网站发布实时的数据信息,如股票的走势、某个公司的运营情况、某个专家对当前经济形式的分析、在经济领域新产生了哪些技术等等。大型金融机构或者理财的个人都需要最前沿的工具来抓取这些必要的数据信息,以供研究。

在互联网金融领域,爬虫程序开发所面临的主要问题是采集性能和反封锁。大多数情况下,采用并发程度高的线程搜索网页数据是可行的,但是,前提是所访问的网站没有设置反爬虫的程序,例如设置防火墙、填写验证码什么的。很多时候有价值的信息都不会轻易被获取,因为网站可能会靠这些数据信息盈利,所以设置反爬虫的措施,限制访问的频率,一旦IP地址被封掉,什么程序就都没用了。所以,爬取数据的公司一般要运营维护一个IP地址池,同时,这也会出现IP是否稳定的问题,这些问题无法被避免,我们针对具体问题具体分析,最高效、最快速的完成爬取数据的任务。

目前,爬虫已在互联网金融领域的需求呈现出几何增长的趋势。未来互联网经济将在我国总的经济产业中占有更高的比重,获取一些重要的网络信息都得需要爬虫技术的参与,爬虫技术为适应新的需求,将会不断地更新发展。

2 关键方法和技术

2.1 多线程机制

网络爬虫需要下载规模非常庞大的网页,如果仅仅采用单线程来操作,采集效果会非常差,并且会浪费大量的时间,因为爬虫程序向服务器提交请求后要等待服务器的处理和返回结果,如果采用单线程,每个线程依次发送请求并等待服务器的依次响应,等待时间是所有网页处理过程的叠加,效率大大降低。因此,可采用多线程机制来减少个别网页的处理时间,以提高程序的效率。

2.2数据库访问技术

爬虫技术采用队列管理的方式,基于SQLserver数据库。在本程序中,我们通过JAVA中的jdbc来操作数据库,通过建立JDBC和ODBC之间的链接,即建立所谓的JDBC-ODBC桥接器,和数据库的连接工作由ODBC去完成。JDBC的作用就是允许程序向数据库发送SQL语句,而且可以指定数据的返回类型。

3 实现过程

3.1 爬虫程序中的主要类和函数

首先,创建InteralCrawler类,用来实现爬虫程序基本的功能,包括多线程机制获取网页、处理网页、搜索新的URL等功能。此外,InteralCrawler类还作为爬虫程序接口,并且由其对象管理线程。

CrawWork类用来创建工作对象,工作对象处理InteralCrawler所访问的网页链接。当程序启动时,CrawWork对象将请求处理网页链接。该对象调用InteralCrawler对象的getWorkload()方法,该方法将返回一个还未处理的网页链接。

3.3 多线程的设计

在我们使用多线程机制来设计爬虫时,大致流程的是:每个爬虫线程抓取的数据要聚集起来,再统一处理,然后让空闲的爬虫程序分去处理新的网页数据。这个工作流程可以让我们联想到master-slave模式,这个模式就相当于在建筑一个工程时,包工头和建筑工人之间的关系,包工头统一规划整个项目的实施流程并向工人下发任务,工人只需出力完成任务。根据这个模式,我们设计爬虫线程。如下图,多线程爬虫如图1所示。

线程的设计是爬虫程序的关键部分,爬虫线程通过最佳优先算法根据一个网页得到其所有链接网页的URL,再搜索所有链接到页面中的关键字。如果搜索到所需数据,爬虫程序通过窗口指针向用户报告。如果未搜索到数据,结束线程,抛弃所有变量,正常返回。

算法思想如下 :

4 总结

爬虫技术在互联网+时代具有广泛的实际应用价值,通过爬虫技术可以实现网页挖掘的核心算法。然而值得一提的是,爬虫在访问某些网页时,可能会遇到一些反爬措施,例如数据加密、网页权限等问题,有些网站只有有权限的用户能访问。网上有一些出售数据的网站他们希望网络爬虫能爬取到他们的报告(相当于给自己打了个广告),但是又不能让这些数据资源免费被爬虫程序爬取,网站会给网络爬虫一个用户名和密码,使得网络爬虫可以访问网站一部分数据,重要的数据会设置权限。

参考文献:

[1] 潘春华,常敏.面向web的信息收集工具的设计与开发[J].计算机应用研究,2002,13(6):144-148。

[2] 杜亚军.爬虫算法设计与程序实现[J].计算机应用,2004.

[3] (美)Jeff Heaton.网络机器人JAVA编程指南[M]. 董兆峰,译,北京:北京电子工业出版社,2002.

[4] Heaton J.Programming Crawlers,Bots and Aggregators in Java[EB/OL].http://www.jeffheaton.com.2004.

[20] 龚秋燕.并行网络爬虫设计与实现[D].上海:华东师范大学,2010.

猜你喜欢
多线程
Java多线程同步机制在网络售票系统中的应用
Java并发工具包对并发编程的优化