python爬虫有什么用处
首先爬虫框架有三种
分布式爬虫:Nutch
JAVA单机爬虫:Crawler4j,WebMagic,WebCollector
非JAVA单机爬虫:scrapy
第一类:分布式爬虫优点:
海量URL管理
网速快
缺点:
Nutch是为搜索引擎设计的爬虫,大多数用户是需要一个做精准数据爬取(精抽取)的爬虫。Nutch运行的一套流程里,有三分之二是为了搜索引擎而设计的。对精抽取没有太大的意义。
用Nutch做数据抽取,会浪费很多的时间在不必要的计算上。而且如果你试图通过对Nutch进行二次开发,来使得它适用于精抽取的业务,基本上就要破坏Nutch的框架,把Nutch改的面目全非。
Nutch依赖hadoop运行,hadoop本身会消耗很多的时间。如果集群机器数量较少,爬取速度反而不如单机爬虫。
Nutch虽然有一套插件机制,而且作为亮点宣传。可以看到一些开源的Nutch插件,提供精抽取的功能。但是开发过Nutch插件的人都知道,Nutch的插件系统有多蹩脚。利用反射的机制来加载和调用插件,使得程序的编写和调试都变得异常困难,更别说在上面开发一套复杂的精抽取系统了。
Nutch并没有为精抽取提供相应的插件挂载点。Nutch的插件有只有五六个挂载点,而这五六个挂载点都是为了搜索引擎服务的,并没有为精抽取提供挂载点。大多数Nutch的精抽取插件,都是挂载在“页面解析”(parser)这个挂载点的,这个挂载点其实是为了解析链接(为后续爬取提供URL),以及为搜索引擎提供一些易抽取的网页信息(网页的meta信息、text)
用Nutch进行爬虫的二次开发,爬虫的编写和调试所需的时间,往往是单机爬虫所需的十倍时间不止。了解Nutch源码的学习成本很高,何况是要让一个团队的人都读懂Nutch源码。调试过程中会出现除程序本身之外的各种问题(hadoop的问题、hbase的问题)。
Nutch2的版本目前并不适合开发。官方现在稳定的Nutch版本是nutch2.2.1,但是这个版本绑定了gora-0.3。Nutch2.3之前、Nutch2.2.1之后的一个版本,这个版本在官方的SVN中不断更新。而且非常不稳定(一直在修改)。
第二类:JAVA单机爬虫优点:
支持多线程。
支持代理。
能过滤重复URL的。
负责遍历网站和下载页面。爬js生成的信息和网页信息抽取模块有关,往往需要通过模拟浏览器(htmlunit,selenium)来完成。
缺点:设计模式对软件开发没有指导性作用。用设计模式来设计爬虫,只会使得爬虫的设计更加臃肿。第三类:非JAVA单机爬虫优点:
先说python爬虫,python可以用30行代码,完成JAVA
50行代码干的任务。python写代码的确快,但是在调试代码的阶段,python代码的调试往往会耗费远远多于编码阶段省下的时间。
使用python开发,要保证程序的正确性和稳定性,就需要写更多的测试模块。当然如果爬取规模不大、爬取业务不复杂,使用scrapy这种爬虫也是蛮不错的,可以轻松完成爬取任务。
缺点:
bug较多,不稳定。
爬虫可以爬取ajax信息么?
网页上有一些异步加载的数据,爬取这些数据有两种方法:使用模拟浏览器(问题1中描述过了),或者分析ajax的http请求,自己生成ajax请求的url,获取返回的数据。如果是自己生成ajax请求,使用开源爬虫的意义在哪里?其实是要用开源爬虫的线程池和URL管理功能(比如断点爬取)。
如果我已经可以生成我所需要的ajax请求(列表),如何用这些爬虫来对这些请求进行爬取?
爬虫往往都是设计成广度遍历或者深度遍历的模式,去遍历静态或者动态页面。爬取ajax信息属于deepweb(深网)的范畴,虽然大多数爬虫都不直接支持。但是也可以通过一些方法来完成。比如WebCollector使用广度遍历来遍历网站。爬虫的第一轮爬取就是爬取种子集合(seeds)中的所有url。简单来说,就是将生成的ajax请求作为种子,放入爬虫。用爬虫对这些种子,进行深度为1的广度遍历(默认就是广度遍历)。
爬虫怎么爬取要登陆的网站?
这些开源爬虫都支持在爬取时指定cookies,模拟登陆主要是靠cookies。至于cookies怎么获取,不是爬虫管的事情。你可以手动获取、用http请求模拟登陆或者用模拟浏览器自动登陆获取cookie。
爬虫怎么抽取网页的信息?
开源爬虫一般都会集成网页抽取工具。主要支持两种规范:CSSSELECTOR和XPATH。
网页可以调用爬虫么?
爬虫的调用是在Web的服务端调用的,平时怎么用就怎么用,这些爬虫都可以使用。
爬虫速度怎么样?
单机开源爬虫的速度,基本都可以讲本机的网速用到极限。爬虫的速度慢,往往是因为用户把线程数开少了、网速慢,或者在数据持久化时,和数据库的交互速度慢。而这些东西,往往都是用户的机器和二次开发的代码决定的。这些开源爬虫的速度,都很可以。
python爬虫要学多久
Python是一门非常不错的编程语言,该语言通俗易懂、容易上手,适合零基础小白学习,也是初学者的首选;而网络爬虫是Python的应用领域之一,相对于其他的领域来说,爬虫学习起来是非常简单的,掌握好基础
python怎么读音发音英语
1、Python适合有一定数学、英语基础的。在编程中,英语直接决定了是否能够读懂编程语言,如果编程语言都读不懂,编程是很难进行的,如果英语不是很好,建议学习下编程相关重点语句、词汇。2、不仅如此,Py
python爬虫怎么学
初期不需要登录的中国站比较简单,掌握httpgetpost和urllib怎么模拟,掌握lxml、BeautifulSoup等parser库就可以了,多用firefox的firebug或者chrome的
python怎么学比较快
36岁0基础学python,两周之内做了一个用于工作的程序,应该有资格回答这个问题。学习pytho最高效的方式是先确定一个目标,即你要开发一个什么程序。我当初学习pytho的目标非常明确,就是要做一个
编程语言python入门
1)简单:python语言的关键字比较少,它没有分号,代码块使用空格或制表键缩进的方式来分割,简化了循环语句。python代码简洁、短小、易于阅读。2)易学:python极其容易上手,因为python
自学python需要多久
一种是如果自学,自学一般周期时间比较长,差不多需要一年左右,当然也是因人而异的,接受能力强,自控能力好,有计划和规划,学习起来自然短一些,不过自学python的人,半途而废的人比较多,这点需要考虑清楚
python用write方法写文字
使用open方法打开一个txt文件,句柄保存在f中。注意第二个参数w,表明是可写模式,只有这种模式你才可以写入文字。第一个参数大家都知道,就是文件路径,如果文件不存在,那么会自动创建一个该目录下的tx
python怎么读取文件
python运行py文件的方法:1.首先在资源管理器里复制一下py文件存放的路径,并打开命令行;2.然后切换到py文件的路径下面;3.接着输入“python ”;4.最后按下回车键,可以看到窗口中py