在如今这个大数据时代,最重要的是什么?
当然是数据,那么问题来了,数据从何而来?
本章就我个人爬取数据的经历来给大家讲讲如何爬取特殊网站-云锁机制。
个人前不久准备爬取数据,之前从没接触过爬取数据,然后我在网上百度了一下(java如何爬取网页数据),我就找了很多,然后就写了一个简单的爬取程序,用的是java,在这里,读者可能问了,为什么不用python呢?(其实个人是从事java开发的,python是在我java不能实现的时候,我才会考虑),使用了jsoup,大家可以去这里下载使用(http://download.csdn.net/detail/qq_32933131/9886841)。代码如下:
org.jsoup.nodes.Document doc = null;
Connection con = null;
// 连接
con = Jsoup.connect(爬取的网页地址).timeout(3000);
// 获取返回内容
doc = con.get();
写完之后,高兴无比,但是当我运行的时候,问题一个接一个的来临:
1、有内容,但是里面不是我想要的数据。
2、连接超时。
那么如何解决这些问题,我和我的一位同事进行了思考,思考了以下几个基本的问题:
1、内容不对,会不会是请求地址的那一方把我这个请求进行了解析呢,比如ip、访问次数等等。
2、连接超时,是不是我这边网络问题,或者请求地址那一方处理了这个请求,也就是说会不会需要传什么特定值等。
以上的问题一一都进行了检验,当我们到ip检验的时候,我们惊奇的发现,我的电脑能获取到7到10几条数据,之后的数据就有问题了,然后同事那边再运行,也和我一样的情况,那么解决方法来了,我们就进行检测ip呗,一旦内容不是我们想要的,或者连接超时那么我们就换ip,然后继续运行,嗯!,我们都觉得的这个方法可行,开干:
第一步:找一个可以换ip的,网上找了找,看到一个ip精灵,于是下载下来,测试了一边,换一次,就是用百度搜索ip,看看ip换没换,结果是ok的,ip的问题解决
ip精灵下载地址:
http://download.djjlll.com/download/ipjl.zip (pc端)
http://download.djjlll.com/software/openvpn.ipa (苹果用户)
第二步:写一个页面,功能包括:
显示当前ip,当前获取数据编号等,根据自己情况而定,当然启动按钮和停止按钮都必须有。
最重要的是需要一些ajax,其中包括:
1、动态获取ip的请求ajax
2、启动数据爬取请求ajax
3、停止数据爬取请求ajax
4、如果还有其它的想法,请在下方评论区发表,我们共同思考和实践,thanks your!
第三步:编写后台程序,涵盖前台的ajax请求,包括:
1、获取ip
2、启动线程去获取内容并且存储
3、关闭获取内容的线程
4、如果还有其它的想法,请在下方评论区发表,我们共同思考和实践,thanks your!
最后我们来实践:
首先启动tomcat,打开页面;然后我们点击启动按钮,随后请启动ip精灵,记得开启自动换ip以及失败继续连接直至成功。
谨以此文章献给刚使用java爬取数据,并且遇到云锁机制的程序猿们,具体代码不予以粘贴,只提供一个思考过程,如有问题请联系qq:905477387。感谢大家的阅读,不足之处请多多指教和包涵!