Java 爬虫学习

Java爬虫领域最强大的框架是JSoup:可直接解析具体的URL地址(即解析对应的HTML),提供了一套强大的API,包括可以通过DOM、CSS选择器,即类似jQuery方式来取出和操作数据。主要功能有:

  • 从给定的URL、文件、字符串中,获得HTML代码。
  • 然后通过DOM、CSS选择器(类jQuery方式)来查找、取出数据:先找到HTML元素,然后获取其属性、文本等。

API初步学习:

上面提到了三种方式,获取HTML文档(JSoup的Document对象的结构是:<html><head></head><body></body></html>):

1、通过字符串:String html="hello"; Document doc = Jsoup.parse(html);//(此时JSoup会把hello放在doc对象中的body中。如果字符串是一个完整的html文档,那么doc对象将以字符串的html结构为准)。

2、获取URL的HTML文档(注意:这种方式下,只有当调用get或post方法时,才真正发送请求):

//通过URL获得连接:Connection对象
Connection conn = Jsoup.connect("http://www.baidu.com");
//以下为主要方法,多数返回Connection
conn.data("query", "Java");   // 请求参数
conn.userAgent("I ’ m jsoup"); // 设置 User-Agent
conn.cookie("auth", "token"); // 设置 cookie
conn.timeout(3000);           // 设置连接超时时间
//发送请求,获得HTML文档:Document对象
Document doc = conn.get();
Document doc = conn.post();

获取元素:

1、通过DOM方式(与纯JavaScript方式相同):

//获取文档级信息,如:
String title = doc.title();
//获取单个HTML元素,如:<div id="content"></div>
Element content = doc.getElementById("content");
//获取多个元素,如:<a href="http://www.qunyh.cn"></a> <a href="http://cn.bing.com"></a>
Elements links = doc.getElementsByTag("a");

2、类似于jQuery的方式,这里是将$换成了select方法:

//select的参数是类似于jQuery的选择器selector
Elements allP = doc.select("p");
Element firstP = allP.first();
Element oneP = allP.get(1);//从0开始
//操作元素:
for (Element p : allP) {
    //操纵元素:这里就类似于jQuery
    String text = p.text();
}

当然JSoup只是模仿jQuery的方便性,并不具备jQuery的所有功能,例如jQuery的插件肯定是无法在JSoup中使用。因此如果对JS掌握很好,选择Node.js+MongoDB来处理就比较有优势(即相互之间的支持度比较大)。如果熟悉Java,那么就可以选择JSoup+MySql+Quartz,也是非常好用的(全程java实现,省心方便),再配合Java调度器Quartz,就可实现一个完整的爬虫了。

爬虫框架 Gecco

Gecco 是用 Java 实现的,轻量化,面向主题的爬虫,与 Nutch 这种面向搜索引擎的通用爬虫不同:

  • 通用爬虫通常关注三个问题:下载、排序、索引。
  • 主题爬虫则关注:下载、内容抽取、灵活的业务逻辑处理。

Gecco 的目标:提供一个完善的主题爬虫框架:简化下载和内容抽取的开发;利用管道过滤器模式,提供灵活的内容清洗和持久化处理模式。故而开发可以集中精力在业务主题方面的逻辑、内容处理。

学习一个框架,首先要了解到它的用途何在:

  • 简单易用,使用 jQuery 的 Selector 风格抽取元素。
  • 支持页面中的异步 Ajax 请求
  • 支持页面中的 JavaScript 变量抽取。
  • 利用 Redis 实现分布式抓取,可参考 Gecco-Redis。
  • 支持下载时 UserAgent 随机选取。
  • 支持下载代理服务器随机选取。
  • 支持结合 Spring 开发业务逻辑,参考 Gecco-Spring。
  • 支持 htmlUnit 扩展,参考 Gecco-htmlUnit。
  • 支持插件扩展机制。

一分钟你就可以写一个简单爬虫

找资料的时候发现了新的、不错的爬虫框架(以后有时间尝试):
Gecco Crawler:
Gecco是一款用java语言开发的轻量化的易用的网络爬虫,不同于Nutch这样的面向搜索引擎的通用爬虫,Gecco是面向主题的爬虫。
https://github.com/xtuhcy/gecco
https://xtuhcy.gitbooks.io/geccocrawler/content/index.html
https://my.oschina.net/u/2336761/blog/688534
模板代码生成器:J2ee template(由JSoup开发而成,可借鉴其如何开发的爬虫):
https://www.oschina.net/p/jeetemp

时间: 2024-10-29 18:15:19

Java 爬虫学习的相关文章

java爬虫学习日记2-宽度优先爬虫代码实现

爬虫两种方式--宽度优先和带偏好爬虫 先复习下上次学了什么: URL和URI的结构组成 根据指定网址爬取网站内容(get方式和post方式) 上一日记中学到了抓取单个页面内容的方法,但实际项目中则需要爬虫遍历互联网,把互联网中相关的页面都抓取回来.那么爬虫是怎样遍历互联网,把页面抓取下来的呢?首先互联网可以开成是一个"图",每个页面可以看作一个节点,链接可以看作是"有向边".因此能够通过图的方式对互联网这超级大"图"进行遍历.图的遍历通常可分为宽

java爬虫案例学习

最近几天很无聊,学习了一下java的爬虫,写一些自己在做这个案例的过程中遇到的问题和一些体会1.学习目标         练习爬取京东的数据,图片+价格+标题等等 2.学习过程 1·开发工具           JDK1.8           IntelliJ IDEA           IDEA自带的Maven 2.使用技术           Spring Boot+Spring Data JPA       3.数据库准备 CREATE TABLE `jd_item` ( `id` b

java爬虫Jsoup简单学习

啥是jsoup? jsoup我就不巴拉巴拉了,具体介绍百度或者去官网查看. jsoup怎么用? jsoup和jquery的操作相似,下面简单使用一下. 使用jsoup大概也就以下几个步骤: 获取整个html文档使用选择器获取需要爬的数据节点集合循环遍历使用选择器获取相应数据实例 这是项目结构也就普通的一个测试项目,需要导入jsoup-x.xx.x.jar包,然后建一个实体类. 我们就拿这个叽歪笑话来说. 每一个笑话对应一个div. 创建一个测试main方法通过Jsoup.conect(url).

webmagic的设计机制及原理-如何开发一个Java爬虫 转

此文章是webmagic 0.1.0版的设计手册,后续版本的入门及用户手册请看这里:https://github.com/code4craft/webmagic/blob/master/user-manual.md 之前就有网友在博客里留言,觉得webmagic的实现比较有意思,想要借此研究一下爬虫.最近终于集中精力,花了三天时间,终于写完了这篇文章.之前垂直爬虫写了一年多,webmagic框架写了一个多月,这方面倒是有一些心得,希望对读者有帮助. webmagic的目标 一般来说,一个爬虫包括

python网络爬虫学习资料

第一:Python爬虫学习系列教程(来源于某博主:http://cuiqingcai.com/1052.html) Python版本:2.7 整体目录: 一.爬虫入门 1. Python爬虫入门一之综述 2. Python爬虫入门二之爬虫基础了解 3. Python爬虫入门三之Urllib库的基本使用 4. Python爬虫入门四之Urllib库的高级用法 5. Python爬虫入门五之URLError异常处理 6. Python爬虫入门六之Cookie的使用 7. Python爬虫入门七之正则

Python爬虫学习路线,强烈建议收藏这十一条

(一)如何学习Python 学习Python大致可以分为以下几个阶段: 1.刚上手的时候肯定是先过一遍Python最基本的知识,比如说:变量.数据结构.语法等,基础过的很快,基本上1~2周时间就能过完了,我当时是在这儿看的基础:Python 简介 | 菜鸟教程 2.看完基础后,就是做一些小项目巩固基础,比方说:做一个终端计算器,如果实在找不到什么练手项目,可以在 Codecademy - learn to code, interactively, for free 上面进行练习. 如果时间充裕的

Java爬虫系列之实战:爬取酷狗音乐网 TOP500 的歌曲

在前面分享的两篇随笔中分别介绍了HttpClient和Jsoup以及简单的代码案例: Java爬虫系列二:使用HttpClient抓取页面HTML Java爬虫系列三:使用Jsoup解析HTML 今天就来实战下,用他们来抓取酷狗音乐网上的 Top500排行榜音乐.接下来的代码中除了会用到HttpClient和Jsoup之外,还会用到log4j和ehcache,分别用来记录日志和实现缓存,如果看官对这两个不是很熟悉的话,请自行百度,现在网上的入门实例有很多,我就不专门记笔记了. 那为什么会想到爬取

Java爬虫利器HTML解析工具-Jsoup

Jsoup简介 Java爬虫解析HTML文档的工具有:htmlparser, Jsoup.本文将会详细介绍Jsoup的使用方法,10分钟搞定Java爬虫HTML解析. Jsoup可以直接解析某个URL地址.HTML文本内容,它提供非常丰富的处理Dom树的API.如果你使用过JQuery,那你一定会非常熟悉. Jsoup最强大的莫过于它的CSS选择器支持了.比如:document.select("div.content > div#image > ul > li:eq(2). 包

JAVA爬虫 WebCollector

爬虫简介: WebCollector是一个无须配置.便于二次开发的JAVA爬虫框架(内核),它提供精简的的API,只需少量代码即可实现一个功能强大的爬虫. 爬虫内核: WebCollector致力于维护一个稳定.可扩的爬虫内核,便于开发者进行灵活的二次开发.内核具有很强的扩展性,用户可以在内核基础上开发自己想要的爬虫.源码中集成了Jsoup,可进行精准的网页解析. 量级: WebCollector最常用的爬取器BreadthCrawler使用2^24的布隆过滤器进行URL管理,可处理2^24量级