直接上干货,这个是前奏,比较山寨的实现,大家可先自行看下
>
一、介绍
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的用户,可以去>
你用的是tomcat55jdk用的15?
copy jdk15的lib/toolsjar到tomcat55的common/lib/toolsjar,覆盖掉原有文件。
试试
这个类文件是你编译的吗?这个错是用了高版本编译的class文件放到低版本的jdk下运行导致的。
要么你升级jdk到15,要么用jdk14重新编译这个class文件
在安装好Java SDK后,还需要设置一些系统变量,系统变量的设置可以在系统属性-高级-环境变量中进行 JAVA_HOME=JAVA安装目录 CLASSPATH=…库路径,可以是目录或jar文件,如C:\j2sdk140_01\lib\dtjar;d:\java,注意两个路径间用分号隔开 如果要使用tomcat,则应该设置CATALINA_HOME=TOMCAT安装目录Oracle XML 开发人员工具包 10g 是在 Oracle 数据库 10g、Oracle 应用服务器 10g 和 OTN 中提供的一系列用 Java、C 和 C++ 编写的组件、工具和实用程序,它们具有商业再发行许可,使构建和部署基于 XML 的应用程序的工作变得容易。 与许多共享件和试用版 XML 组件不同,产品版本的 Oracle XDK 提供 XML 支持(已经过严格的企业生产环境验证,包括 Oracle SOA、Oracle JDeveloper/ADF、Oracle XML DB 和 Oracle XML Publisher)。使用 Oracle XDK 的 Oracle 用户可享受 24x7 的正式支持。Oracle XDK 由下列组件组成: XML 分析器:利用 DOM(包括 30)、SAX 和 JAXP 接口创建和分析 XML。利用统一的 C DOM 接口在 Oracle 数据库 10g 中直接访问 XMLType。 XSLT 处理程序:转换或解释 XML。现在带有 XSLT 20 Java 支持。 XSLT VM:编译器利用已编译的样式表提供了高性能 C XSLT 转换引擎。 XML 模式处理程序:支持 XML 模式验证,现在包含了为基于流的处理提供的验证接口。 XML Java Bean:通过 Java 组件来分析、转换、区分、检索和压缩 XML 文档。 XML 类生成器:现在支持 JAXB,自动从 DTD 和 XML 模式中生成类来从 Web 表单或应用程序发送 XML。 XML SQL 实用程序:从用 Java 编写的 SQL 查询中生成 XML 文档、DTD 和 XML 模式,以及将 XML 文档插入 Oracle 数据库。 XSQL Servlet:结合服务器中的 XML、SQL 和 XSLT 来提供动态 Web 内容和构建复杂的数据库支持的 web 站点和服务器。 XML Pipeline 处理程序:通过 XML 控制文件调用 Java 过程。 TransX 实用工具:使得将全球化的源数据和消息加载到 Oracle 数据库中变得更容易。 给你个网址: >
讨论一下:
<jsp:useBean id="girl" class="tomCircle" scope="page"/>
中tom应是你自己起的包名,可在beans的第一行没见命令package < 包名>
Circlejava 、Circleclass应放一起,如有自己的包应放包里D:\myapp\WEB-INF\classes\包\………
如果你是初学者jsp文件最好选择服务器默认的根目录
以上就是关于如何构建一个基于netty的后端服务器全部的内容,包括:如何构建一个基于netty的后端服务器、使用java语言爬取自己的淘宝订单看看买了哪些东西、运行jsp时的问题,高手帮下忙等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)