网络爬虫软件有哪些比较知名的?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络爬虫软件有哪些比较知名的?相关的知识,希望对你有一定的参考价值。

参考技术A 这里简单介绍3个比较实用的爬虫软件,分别是火车头、八爪鱼和后羿,对于网络大部分数据来说,都可以轻松爬取,而且不需要编写一行代码,感兴趣的朋友可以尝试一下:

这是Windows系统下一个非常不错的网络爬虫软件,个人使用完全免费,集成了数据的抓取、处理、分析和挖掘全过程,可以灵活抓取网页上散乱的数据,并通过一系列的分析处理,准确挖掘出所需信息,下面我简单介绍一下这个软件:

1.首先,安装火车头采集器,这个直接在官网上下载就行,如下,安装包也就30M左右,一个exe文件,直接双击安装:

2.安装完成后,打开这个软件,主界面如下,接着我们就可以直接新建任务,设计采集规则,爬取网络数据了,官方自带有详细教程(帮助手册),可供初学者学习使用,非常方便:

这也是Windows平台下一个非常不错的爬虫软件,个人使用完全免费,内置了大量采集模板,可以轻松采集京东、天猫、大众点评等热门网站,而且不需编写一行代码,下面我简单介绍一下这个软件:

1.首先,安装八爪鱼采集器,这个也直接到官网上下载就行,如下,一个exe安装包,直接双击安装就行:

2.安装完成后,打开这个软件,主界面如下,接着我们就可以直接定义采集方式,新建采集任务,爬取网页数据了,官网也带有入门文档和教程,非常适合初学者学习:

这是一个免费、跨平台的网络爬虫软件,个人版完全免费,基于人工智能技术,可以智能识别并提取出网页内容(包括列表、表格等),支持自动翻页和文件导出功能,使用起来非常方便,下面我简单介绍一下这个软件:

1.首先,安装后羿采集器,这个也直接到官网上下载就行,如下,各个平台的版本都有,选择适合自己平台的版本即可:

2.安装完成后,打开这个软件,主界面如下,这里我们直接输入需要采集的网页地址,软件就会自动识别并抓取网页信息,非常智能:

目前,就分享这3个不错的网络爬虫软件吧,对于日常爬取网页数据来说,完全够用了,当然,还有许多其他爬虫软件,像造数等,也都非常不错,网上也有相关教程和资料,介绍的非常详细,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言进行补充。

国内比较出名的爬虫软件,一个是八爪鱼,一个是火车头。他们都提供图形界面的操作,都有自己的采集规则市场。你可以买一些采集规则,然后自己抓取数据,当然你也可以直接买别人采集好的数据。

国外的比较出名的采集软件有diffbot和import.io这两个都可以称之为神器。都是输入网址,提供可视化图形操作界面。给定采集字段,就可以预览采集的结果。可以说非常方便,导出格式也很多,可以excel,也可以是数据库。

[安全资讯] | 反爬虫技术

因为搜索引擎的流行,网络爬虫已经成了很普及网络技术,除了专门做搜索的Google,Yahoo,微软,百度以外,几乎每个大型门户网站都有自己的搜索引擎,大大小小叫得出来名字得就几十种,还有各种不知名的几千几万种,对于一个内容型驱动的网站来说,受到网络爬虫的光顾是不可避免的。

一些智能的搜索引擎爬虫的爬取频率比较合理,对网站资源消耗比较少,但是很多糟糕的网络爬虫,对网页爬取能力很差,经常并发几十上百个请求循环重复抓取,这种爬虫对中小型网站往往是毁灭性打击,特别是一些缺乏爬虫编写经验的程序员写出来的爬虫破坏力极强,造成的网站访问压力会非常大,会导致网站访问速度缓慢,甚至无法访问。

手工识别和拒绝爬虫的访问

相当多的爬虫对网站会造成非常高的负载,因此识别爬虫的来源IP是很容易的事情。最简单的办法就是用netstat检查80端口的连接:

netstat -nt | grep youhostip:80 | awk '{print $5}' | awk -F":" '{print $1}'| sort | uniq -c | sort -r -n 

这行shell可以按照80端口连接数量对来源IP进行排序,这样可以直观的判断出来网页爬虫。一般来说爬虫的并发连接非常高。

如果使用lighttpd做Web Server,那么就更简单了。lighttpd的mod_status提供了非常直观的并发连接的信息,包括每个连接的来源IP,访问的URL,连接状态和连接时间等信息,只要检查那些处于handle-request状态的高并发IP就可以很快确定爬虫的来源IP了。

拒绝爬虫请求既可以通过内核防火墙来拒绝,也可以在web server拒绝,比方说用iptables拒绝:

iptables -A INPUT -i eth0 -j DROP -p tcp --dport 80 -s 84.80.46.0/24  

通过识别爬虫的User-Agent信息来拒绝爬虫

这种情况下我们可以通过爬虫的User-Agent信息来识别。每个爬虫在爬取网页的时候,会声明自己的User-Agent信息,因此我们就可以通过记录和分析User-Agent信息来挖掘和封锁爬虫。我们需要记录每个请求的User-Agent信息,对于Rails来说我们可以简单的在app/controllers/application.rb里面添加一个全局的before_filter,来记录每个请求的User-Agent信息:

logger.info "HTTP_USER_AGENT #{request.env["HTTP_USER_AGENT"]}"  

然后统计每天的production.log,抽取User-Agent信息,找出访问量最大的那些User-Agent。要注意的是我们只关注那些爬虫的User-Agent信息,而不是真正浏览器User-Agent,所以还要排除掉浏览器User-Agent,要做到这一点仅仅需要一行shell:

grep HTTP_USER_AGENT production.log | grep -v -E 'MSIE|Firefox|Chrome|Opera|Safari|Gecko' | sort | uniq -c | sort -r -n | head -n 100 > bot.log

统计结果类似这样:

  57335 HTTP_USER_AGENT Baiduspider+(+http://www.baidu.com/search/spider.htm)
  56639 HTTP_USER_AGENT Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
  42610 HTTP_USER_AGENT Mediapartners-Google  19131 HTTP_USER_AGENT msnbot/2.0b (+http://search.msn.com/msnbot.htm)    

从日志就可以直观的看出每个爬虫的请求次数。要根据User-Agent信息来封锁爬虫是件很容易的事情,lighttpd配置如下:

$HTTP["useragent"] =~ "qihoobot|^Java|Commons-HttpClient|Wget|^PHP|Ruby|Python" {
  url.rewrite = ( "^/(.*)" => "/crawler.html" )
}

使用这种方式来封锁爬虫虽然简单但是非常有效,除了封锁特定的爬虫,还可以封锁常用的编程语言和HTTP类库的User-Agent信息,这样就可以避免很多无谓的程序员用来练手的爬虫程序对网站的骚扰。

还有一种比较常见的情况,就是某个搜索引擎的爬虫对网站爬取频率过高,但是搜索引擎给网站带来了很多流量,我们并不希望简单的封锁爬虫,仅仅是希望降低爬虫的请求频率,减轻爬虫对网站造成的负载,那么我们可以这样做:

$HTTP["user-agent"] =~ "Baiduspider+" {
    connection.delay-seconds = 10}    

对百度的爬虫请求延迟10秒钟再进行处理,这样就可以有效降低爬虫对网站的负载了。

通过网站流量统计系统和日志分析来识别爬虫

有些爬虫喜欢修改User-Agent信息来伪装自己,把自己伪装成一个真实浏览器的User-Agent信息,让你无法有效的识别。这种情况下我们可以通过网站流量系统记录的真实用户访问IP来进行识别。

主流的网站流量统计系统不外乎两种实现策略:一种策略是在网页里面嵌入一段js,这段js会向特定的统计服务器发送请求的方式记录访问量;另一种策略是直接分析服务器日志,来统计网站访问量。在理想的情况下,嵌入js的方式统计的网站流量应该高于分析服务器日志,这是因为用户浏览器会有缓存,不一定每次真实用户访问都会触发服务器的处理。但实际情况是,分析服务器日志得到的网站访问量远远高于嵌入js方式,极端情况下,甚至要高出10倍以上。

现在很多网站喜欢采用awstats来分析服务器日志,来计算网站的访问量,但是当他们一旦采用Google Analytics来统计网站流量的时候,却发现GA统计的流量远远低于awstats,为什么GA和awstats统计会有这么大差异呢?罪魁祸首就是把自己伪装成浏览器的网络爬虫。这种情况下awstats无法有效的识别了,所以awstats的统计数据会虚高。

其实作为一个网站来说,如果希望了解自己的网站真实访问量,希望精确了解网站每个频道的访问量和访问用户,应该用页面里面嵌入js的方式来开发自己的网站流量统计系统。自己做一个网站流量统计系统是件很简单的事情,写段服务器程序响应客户段js的请求,分析和识别请求然后写日志的同时做后台的异步统计就搞定了。

grep Processing production.log | awk '{print $4}' | awk -F'.' '{print $1"."$2"."$3".0"}' | sort | uniq -c | sort -r -n | head -n 200 > stat_ip.log
whitelist = []IO.foreach("#{RAILS_ROOT}/lib/whitelist.txt") { |line| whitelist << line.split[0].strip if line }realiplist = []IO.foreach("#{RAILS_ROOT}/log/visit_ip.log") { |line|  realiplist << line.strip if line }iplist = []IO.foreach("#{RAILS_ROOT}/log/stat_ip.log") do |line|  ip = line.split[1].strip
  iplist << ip if line.split[0].to_i > 3000 && !whitelist.include?(ip) && !realiplist.include?(ip)end Report.deliver_crawler(iplist)

网站的实时反爬虫防火墙实现策略

通过分析日志的方式来识别网页爬虫不是一个实时的反爬虫策略。如果一个爬虫非要针对你的网站进行处心积虑的爬取,那么他可能会采用分布式爬取策略,比方说寻找几百上千个国外的代理服务器疯狂的爬取你的网站,从而导致网站无法访问,那么你再分析日志是不可能及时解决问题的。所以必须采取实时反爬虫策略,要能够动态的实时识别和封锁爬虫的访问。

要自己编写一个这样的实时反爬虫系统其实也很简单。比方说我们可以用memcached来做访问计数器,记录每个IP的访问频度,在单位时间之内,如果访问频率超过一个阀值,我们就认为这个IP很可能有问题,那么我们就可以返回一个验证码页面,要求用户填写验证码。如果是爬虫的话,当然不可能填写验证码,所以就被拒掉了,这样很简单就解决了爬虫问题。

用memcache记录每个IP访问计数,单位时间内超过阀值就让用户填写验证码,用Rails编写的示例代码如下:

ip_counter = Rails.cache.increment(request.remote_ip)if !ip_counter
  Rails.cache.write(request.remote_ip, 1, :expires_in => 30.minutes)elsif ip_counter > 2000
  render :template => 'test', :status => 401 and return falseend
before_filter :ip_firewall, :except => :testdef ip_firewall
  render :file => "#{RAILS_ROOT}/public/403.html", :status => 403 if BlackList.include?(ip_sec)end    
ip_counter = Rails.cache.increment(request.remote_ip)if !ip_counter
  Rails.cache.write(request.remote_ip, 1, :expires_in => 30.minutes)elsif ip_counter > 2000
  crawler_counter = Rails.cache.increment("crawler/#{request.remote_ip}")  if !crawler_counter
    Rails.cache.write("crawler/#{request.remote_ip}", 1, :expires_in => 10.minutes)  elsif crawler_counter > 50
    BlackList.add(ip_sec)    render :file => "#{RAILS_ROOT}/public/403.html", :status => 403 and return false
  end
  render :template => 'test', :status => 401 and return falseend

关于这个通用反爬虫的功能,我们开发一个开源的插件:https://github.com/csdn-dev/limiter

这个策略已经比较智能了,但是还不够好!我们还可以继续改进:

1、用网站流量统计系统来改进实时反爬虫系统

2、用时间窗口来改进实时反爬虫系统

最终这个实时反爬虫系统就相当完善了,它可以很快的识别并且自动封锁爬虫的访问,保护网站的正常访问。不过有些爬虫可能相当狡猾,它也许会通过大量的爬虫测试来试探出来你的访问阀值,以低于阀值的爬取速度抓取你的网页,因此我们还需要辅助第3种办法,用日志来做后期的分析和识别,就算爬虫爬的再慢,它累计一天的爬取量也会超过你的阀值被你日志分析程序识别出来。

总之我们综合运用上面的四种反爬虫策略,可以很大程度上缓解爬虫对网站造成的负面影响,保证网站的正常访问。

(稿源:深圳市网络与信息安全行业协会)


专注于安全测评及服务

www.chinagdn.com


广州竞远安全技术股份有限公司成立于2003年,致力于提供高质量的信息安全测评及安全服务,是中国安全测评领域的领先服务机构。



以上是关于网络爬虫软件有哪些比较知名的?的主要内容,如果未能解决你的问题,请参考以下文章

IP代理软件哪个比较好

请问啥是网络爬虫啊?是干啥的呢

MAC上的爬虫软件怎么选?看完这篇就够了

数据采集器与爬虫相比都有哪些优势?

python网络爬虫可以干什么

官方数据网站可以使用爬虫软件吗