Java爬虫框架WebMagic简介及使用
一、介绍
webmagic的是一个无须配置、便于二次开发的爬虫框架,它提供简单灵活的API,只需少量代码即可实现一个爬虫。webmagic采用完全模块化的设计,功能覆盖整个爬虫的生命周期(链接提取、页面下载、内容抽取、持久化),支持多线程抓取,分布式抓取,并支持自动重试、自定义UA/cookie等功能。
二、概览
WebMagic项目代码分为核心和扩展两部分。核心部分(webmagic-core)是一个精简的、模块化的爬虫实现,而扩展部分则包括一些便利的、实用性的功能(例如注解模式编写爬虫等)。
WebMagic的结构分为Downloader、PageProcessor、Scheduler、Pipeline四大组件,并由Spider将它们彼此组织起来。这四大组件对应爬虫生命周期中的下载、处理、管理和持久化等功能。而Spider则将这几个组件组织起来,让它们可以互相交互,流程化的执行,可以认为Spider是一个大的容器,它也是WebMagic逻辑的核心。
21 WebMagic的四个组件
Downloader
Downloader负责从互联网上下载页面,以便后续处理。WebMagic默认使用了Apache >
PageProcessor
PageProcessor负责解析页面,抽取有用信息,以及发现新的链接。WebMagic使用Jsoup作为HTML解析工具,并基于其开发了解析XPath的工具Xsoup。在这四个组件中,PageProcessor对于每个站点每个页面都不一样,是需要使用者定制的部分。
Scheduler
Scheduler负责管理待抓取的URL,以及一些去重的工作。WebMagic默认提供了JDK的内存队列来管理URL,并用集合来进行去重。也支持使用Redis进行分布式管理。除非项目有一些特殊的分布式需求,否则无需自己定制Scheduler。
Pipeline
Pipeline负责抽取结果的处理,包括计算、持久化到文件、数据库等。WebMagic默认提供了“输出到控制台”和“保存到文件”两种结果处理方案。Pipeline定义了结果保存的方式,如果你要保存到指定数据库,则需要编写对应的Pipeline。对于一类需求一般只需编写一个Pipeline。
22 用于数据流转的对象
Request
Request是对URL地址的一层封装,一个Request对应一个URL地址。它是PageProcessor与Downloader交互的载体,也是PageProcessor控制Downloader唯一方式。
Page
Page代表了从Downloader下载到的一个页面——可能是HTML,也可能是JSON或者其他文本格式的内容。Page是WebMagic抽取过程的核心对象,它提供一些方法可供抽取、结果保存等。
ReusltItems
ReusltItems相当于一个Map,它保存PageProcessor处理的结果,供Pipeline使用。它的API与Map很类似,值得注意的是它有一个字段skip,若设置为true,则不应被Pipeline处理。
23 控制爬虫运转的引擎—Spider
Spider是WebMagic内部流程的核心。Downloader、PageProcessor、Scheduler、Pipeline都是Spider的一个属性,这些属性是可以自由设置的,通过设置这个属性可以实现不同的功能。Spider也是WebMagic *** 作的入口,它封装了爬虫的创建、启动、停止、多线程等功能。
对于编写一个爬虫,PageProcessor是需要编写的部分,而Spider则是创建和控制爬虫的入口。
24 WebMagic项目组成
WebMagic项目代码包括几个部分,在根目录下以不同目录名分开。它们都是独立的Maven项目。
WebMagic主要包括两个包,这两个包经过广泛实用,已经比较成熟:
webmagic-core
webmagic-core是WebMagic核心部分,只包含爬虫基本模块和基本抽取器。
webmagic-extension
webmagic-extension是WebMagic的主要扩展模块,提供一些更方便的编写爬虫的工具。包括注解格式定义爬虫、JSON、分布式等支持。
三、 基本的爬虫
31 爬虫的流程 (可以参考上边的框架架构图)
Downloader-页面下载
页面下载是一切爬虫的开始。
大部分爬虫都是通过模拟>
webmagic使用了>
PageProcessor-页面分析及链接抽取
Selector是webmagic为了简化页面抽取开发的独立模块,是整个项目中我最得意的部分。这里整合了CSS Selector、XPath和正则表达式,并可以进行链式的抽取,很容易就实现强大的功能。即使你使用自己开发的爬虫工具,webmagic的Selector仍然值得一试
Jsoup
HtmlParser
Apache tika
HtmlCleaner与Xpath
这里说的页面分析主要指HTML页面的分析。页面分析可以说是垂直爬虫最复杂的一部分,在webmagic里,PageProcessor是定制爬虫的核心。通过编写一个实现PageProcessor接口的类,就可以定制一个自己的爬虫
HTML分析是一个比较复杂的工作,Java世界主要有几款比较方便的分析工具:
webmagic的Selector
Scheduler-URL管理
URL管理的问题可大可小。对于小规模的抓取,URL管理是很简单的。我们只需要将待抓取URL和已抓取URL分开保存,并进行去重即可。使用JDK内置的集合类型Set、List或者Queue都可以满足需要。如果我们要进行多线程抓取,则可以选择线程安全的容器,例如LinkedBlockingQueue以及ConcurrentHashMap。因为小规模的URL管理非常简单,很多框架都并不将其抽象为一个模块,而是直接融入到代码中。但是实际上,抽象出Scheduler模块,会使得框架的解耦程度上升一个档次,并非常容易进行横向扩展,这也是我从scrapy中学到的。
Pipeline-离线处理和持久化
Pipeline其实也是容易被忽略的一部分。大家都知道持久化的重要性,但是很多框架都选择直接在页面抽取的时候将持久化一起完成,例如crawer4j。但是Pipeline真正的好处是,将页面的在线分析和离线处理拆分开来,可以在一些线程里进行下载,另一些线程里进行处理和持久化。
32 使用WebMagic爬取一个壁纸网站
首先引入WebMagic的依赖,webmagic-core-{version}jar和webmagic-extension-{version}jar。在项目中添加这两个包的依赖,即可使用WebMagic。
maven中引入依赖jar包
<dependency><groupId>uscodecraft</groupId>
<artifactId>webmagic-core</artifactId>
<version>053</version>
</dependency>
<dependency>
<groupId>uscodecraft</groupId>
<artifactId>webmagic-extension</artifactId>
<version>053</version>
</dependency>1234567891012345678910
不使用maven的用户,可以去>
无论你是Linux新人还是老鸟,层出不穷的应用和桌面环境可能都会让我们应接不暇,特别是尝试不同的Linux桌面环境,可以说是一项非常耗时和累人的任务
在此,咱系统极客对目前应用最为广泛的7款Linux桌面环境进行盘点,并对其优缺点进行比较,希望对各位选择或者进行各种折腾有所帮助
声明:我们只是对目前应用最为广泛的7款Linux桌面环境进行盘点小节,排名无分先后
KDEKDE绝非只是一个桌面环境,实际上是各种应用程序与Linux桌面的一个集合,桌面环境本身只作为该套应用环境的一个子集
目前最新的KDE环境名叫Plasma,它又分为PlasmaDesktop和PlasmaNetbook两个版本,KDE可以说是目前定制性最强,最为灵活的Linux桌面环境之一
其它桌面环境可能需要使用额外的工具才能进行自定义或调整,而KDE将这一切都集成进了系统设置当中,用户不需要使用任何第三方工具即可以对桌面进行个性化订制,如下载桌面小工具、壁纸和主题等
KDE还对常用的基本应用程序进行了集成,并对未使用KDE开发平台构建的应用进行兼容,KDE集成的应用非常丰富,完全能够满足普通用户的日常应用,而无需安装其它替代应用
无论你只是想要一个开箱即用的Linux桌面环境还是要对桌面进行全面的个性化订制,KDE都是一个非常不错的选择
目前采用KDE作为默认桌面环境的Linux发行版主要有openSUSE和Kubuntu
KDE优点:功能十分丰富强大高度可定制性和灵活性范围广泛的软件兼容性KDE缺点:稍重的资源占用某些组件使用起来似乎过于复杂MATEMATE桌面环境基于目前无人维护的GNOME2,MATE最初就是为对GNOME3失望的用户而开发
ForkGNOME2的代码进行开发并不意味着就使用过时的技术,MATE将继续使用现代技术进行改善
MATE桌面环境采用了现代而又不失传统的桌面体验,它支持面板系统、各种菜单、小程序、指示器和按钮等,并可按用户的需要进行布置
MATE自带的基本应用都从GNOME2复制过来进行集成,它本身对资源的消耗非常小,能够在不十分强劲的硬件平台上稳定工作
UbuntuMATE目前采用MATE作为自己的默认桌面环境
MATE优点:直观和稳定的用户体验简单、轻便高度可定制MATE缺点:接口看起来有些老了GNOMEGNOME是各Linux发行版采用最为广泛、最流行的桌面环境之一,许多Linux发行版都使用GNOME作为默认桌面环境
它也有一些流行的分支,例如Cinnamon、Unity等等
GNOME以易于使用和定制为设计初衷,目前果最新的GNOME3具有非常现代和有吸引力的用户界面,并能为触摸设备提供更好的支持
GNOME几乎包含了所有现代化桌面环境需要的所有功能,GNOME3比GNOME2的精典模式提供了更好的界面,仪表板、全系统搜索和强大的应用程序都能够直接轻松搞定用户使用需求
不过桌面环境的定制调整需要使用gnome-tweak-tool工具来完成,在3
18版本中它还了文件管理器的一些有趣功能,例如对GoogleDrive进行了集成
目前使用GNOME作为默认桌面环境的Linux发行版主要有Debian、Fedora、openSUSE和UbuntuGNOME
GNOME优点:现代和触摸友好的用户界面能够通过Shell扩展延伸功能可定制性强GNOME缺点:扩展管理不尽如人意CINNAMONCinnamon是GNOME3的一个分支,目前正作为LinuxMint的默认桌面环境
它最出名的便是与Windows相似的用户界面,可以帮助Linux入门用户轻松上手并减低不适应度
Cinnamon集成的各种基本应用都源于GNOME3,Cinnamon集成了面板、主题、小应用程序和各种自定义组件扩展,面板位置屏幕底部边缘,配备了主菜单、启用程序、打开窗口列表及系统托盘等
Cinnamon优点:时尚精致的外观熟悉的界面非常漂亮的定制Cinnamon缺点:偶尔出现的BugUNITYUnity也是基于GNOME桌面环境开发而来,配备有最核心的GNOME应用程序
Unity主要用于Canonical开发的Ubuntu桌面环境
Unity主攻方向为使用键盘、鼠标、触控板甚至触摸屏的用户提供一致一用户体验,为用户提供了简单的应用程序并集成了触控友好的使用环境,还实现了一些新的想法和技术,如Lens和HUD等
尽管针对Unity桌面环境有大量的争论,但它还是有非常大量的用户,这都归功于它是目前最流行Linux发行版Ubuntu的默认桌面环境
怎么把一张照片设置成适合自己电脑桌面的壁纸
可以,
找大一点的,把修剪为1280800,不是压缩或者拉伸,是修剪,具体做法就是用ps打开后,改变画布大小为1280800。没有ps用画图也行
WORD 文件如何设置成桌面墙纸
word 文件-另存为-低下格式选html
然后再桌面属性里面的亥面-浏览 选中你的html文件 -ok
windows7 如何设置桌面背景
Windows7桌面背景也称壁纸,它有这样几种设置方式(已经将相伐资料打入Hi之中):
①右键点击桌面空白处,在出来的菜单中选择个性化→点击主题就可以更换桌面背景了。
②点击开始→控制面板→个性化→主题→也能更换桌面背景(俗称壁纸)
③右键点击自己喜欢的→设为桌面背景←这样也能更换桌面背景。
④下载新的主题包,安装一下也能更换桌面背景,而且还会更换图标、鼠标和开始菜单背景
参考资料:
怎样把桌面墙纸设置为好多可以自动变化的
1)在“运行”栏中使用命令“Deskcpl”,打开“显示 属性”窗口;
2)在“桌面”选项卡中,单击“自定义桌面”按钮①,打开“桌面项目”窗口
3)在“Web”选项卡中单击“新建”按钮②,打开“新建桌面项目”窗口; 4)在“位置”栏中输入包含有Flas 的网址,如“”;
5)在系统自动把Flash文件下载后,就可以在桌面中通过一个小窗口的方式欣赏Flas 了。
提示:
用这个方法不仅可以显示Flas ,也可以用来显示Java等特效——只要能用IE浏览器看到的效果,都可以在桌面上实现。
还有 FLASH相册软件也大部份带有动态桌面功能
电脑桌面壁纸怎么弄
WIN7设置桌面壁纸:
1、在桌面的空白处点击右键,选择“个性化”,如下图:
2、在个性化对话框中选择“桌面背景”选项。之后进入如下 *** 作界面。
3、在桌面背景对话框中点选浏览,选择保存在电脑中的位置。刚才把放在桌面上,所以只要这里浏览到桌面上去选取即可,如下:
*** 作步骤如上图,选择好了,最好保存即可。
winxp设置桌面壁纸:
1、系统的桌面上右键--选择 --属性 如下图:
2、在桌面属性对话框中选择“桌面”选项。点选浏览,选择下载好保存在电脑桌面中的。如下
完成之后点确定即完成了桌面更换设置的全部过程,其实不管是windows7系统还是windows xp *** 作系统,更换和设置电脑桌面背景壁纸的方法可以说是基本相同的。
电脑桌面背景怎么调大小
鼠标放在桌面上点击右键 然后点击属性 然后会出现显示属性 在点击里面的桌面以后 选择你要的桌面背景以后 在点击左侧位置下有个 拉伸 居中 平铺 你选择
怎么设置电脑休眠壁纸
你点击鼠标右键会出现 属性(R)你点一下又会出现 显示属性 下面一点点有一个 屏幕保护程序 然后你自己设置 这就是 休眠壁纸 (千万不要瞎搞!)
记得采纳啊
w7桌面背景图怎么在哪里设置平铺之类的
1右键点击桌面空白处,选择个性化,在d出窗口中点击桌面背景;
2在d出窗口中点击位置进行设置桌面背景显示方式。
桌面壁纸怎么设置才能和屏幕一样大
兄台,很简单在桌面空白处点击右键-属性-桌面-,有三个选择,(居中-平铺-拉伸),选择拉伸,选择的大小跟你桌面一样了,谢谢
电脑怎么设置自动换桌面壁纸,比如一小时换一种。
1、W8系统设置壁纸中的更新桌面的功能需要打开个性化设置窗口。如图:
如果电脑桌面壁纸足够多的话,可以选择呢红色圆圈内的更改时间,框内的时间自定义一个,就可以在电脑开机状态下桌面中的更换。
2、如果是XP系统,需要选择鼠标在桌面空白处点击右键俯开属性,然后在桌面壁纸窗口内进行设置这种功能。完成设置以后确定即可。
以上就是关于使用java语言爬取自己的淘宝订单看看买了哪些东西全部的内容,包括:使用java语言爬取自己的淘宝订单看看买了哪些东西、Java开发工具哪个好、桌面墙纸怎么设置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)