阿布云

你所需要的,不仅仅是一个好用的代理。

关于JAVA爬虫的一些问题(二)

阿布云 发表于

   61.2.png

    1.爬虫怎么抽取网页的信息?开源爬虫一般都会集成网页抽取工具.主要支持两种规范:CSS SELECTOR和XPATH.
    2.爬虫怎么保存网页信息的呢?有一些爬虫,自带一个模块负责持久化.比如webmagic,有一个模块叫pipeline.通过简单地配置,可以将爬虫抽取到的信息,持久化到文件、数据库等.还有一些爬虫,并没有直接给用户提供数据持久化的模块.比如crawler4j和webcollector.让用户自己在网页处理模块中添加提交数据库的操作.至于使用pipeline这种模块好不好,就和操作数据库使用ORM好不好这个问题类似,取决于你的业务.
    3.爬虫被网站封了怎么办?爬虫被网站封了,一般用多代理(随机代理)就可以解决.但是这些开源爬虫一般没有直接支持随机代理的切换.所以很多用户都会选择使用代理IP商提供的海量IP.
    4.网页可以调用爬虫么?爬虫的调用是在Web的服务端调用的,平时怎么用就怎么用,这些爬虫都可以使用.
    5.爬虫速度怎么样?单机开源爬虫的速度,基本都可以讲本机的网速用到极限.爬虫的速度慢,往往是因为用户把线程数开少了、网速慢,或者在数据持久化时,和数据库的交互速度慢.而这些东西,往往都是用户的机器和二次开发的代码决定的.这些开源爬虫的速度,都很可以.
    6.明明代码写对了,爬不到数据,是不是爬虫有问题,换个爬虫能解决么?如果代码写对了,又爬不到数据,换其他爬虫也是一样爬不到.遇到这种情况,要么是网站把你封了,要么是你爬的数据是javascript生成的.爬不到数据通过换爬虫是不能解决的.
    7.哪个爬虫可以判断网站是否爬完、那个爬虫可以根据主题进行爬取?爬虫无法判断网站是否爬完,只能尽可能覆盖.至于根据主题爬取,爬虫之后把内容爬下来才知道是什么主题.所以一般都是整个爬下来,然后再去筛选内容.如果嫌爬的太泛,可以通过限制URL正则等方式,来缩小一下范围.
    8.哪个爬虫的设计模式和构架比较好?设计模式纯属扯淡.说软件设计模式好的,都是软 件开发完,然后总结出几个设计模式.设计模式对软件开发没有指导性作用.用设计模式来设计爬虫,只会使得爬虫的设计更加臃肿.至于构架,开源爬虫目前主要是细节的数据结构的设计,比如爬取线程池、任务队列,这些大家都能控制好.爬虫的业务太简单,谈不上什么构架.
    所以对于JAVA开源爬虫来说,随便找一个用的顺手的就可以了.如果业务复杂,拿哪个爬虫来,都是要经过复杂的二次开发,才能够满足需求的.