其实现在用JSOUP爬虫的也不多了,但是由于最近换公司,做数据爬虫需要用到,就看了下,感觉还是挺好用的,原理什么的感觉和weblogic也差不到哪里去,废话少说,这里就简单的分享下最近接触的干货。

JSOUP实现原理也简单说一下,可能有不对的地方评论欢迎指正。我们可以使用JSOUP直接解析某个URL地址或者指定的HTML文本,将抓取的网页或者文本内容加载到Document中,然后可以针对这个doucument进行解析,选择,利用dom或者css或者匹配正则来获取你需要的内容。下面是我项目脚本的内容部分分享,可以供大家一起参考学习,从浅入深:

第一步:当然是在项目中导入需要的jar包,使用maven管理的可以直接在pom文件里面导,

没有的同学可以去官网下载jar包https://jsoup.org/download。

接下来我们就可以正式开始第一个JSOUP项目抓取工作了

第二步:初始化或者指定url,将内容加载到document并制定编码格式

            String url="http://baidu.com.cn"
String result = RequestUtil.doGet(url,"GBK") // println(result);
Document doc = Jsoup.parse(result)

在这里我们可以看到你已经把这个网页内容加载进去了,然后我们可以开始根据需求来抓取需要的数据

第三步:根据需求抓取数据:

我们这里先介绍使用选择器来抓取数据,这里可以利用到网页的dom节点class或者id来抓取文本下的

内容:

1、根据class选择器来选择文本:

doc.select(".head_wrapper")

这里的.head_wrapper就是网页标签的一个类   ,抓取到的文本就是.head_wrapper这个标签及其子节点的里面的内容。

2、根据id选择器来选择文本:

Element link2=doc.select("#css_index_result")

这里选取的是以这个为id的标签内容以及其子节点的所有内容

3、抓取a标签的href:

Elements hrefs = doc.select("a[href]");

4、灵活使用^,$与~分别抓取以什么开头,以什么结尾,正则表达式匹配的内容

//以.com结尾的img标签内容抓取
Elements hrefs = doc.select("img[src$=.com]");
println(hrefs)
//以//www.开头的img标签内容抓取
Elements imgs = doc.select("img[src^=//www.]");
println(imgs)
//正则表达式匹配以png,gif,jpg结尾的img标签抓取
Elements jpgs = doc.select("img[src~=(?i)\\.(png|gif|jpg?g)]");
println(jpgs)

以上抓取的内容可能一条或者多条,多条存放就存放在一个list中,可以遍历这个list查看,ok,这里基础内容写到这里,接下来更新JSOUP学习分享(二),感谢您的阅读

有关JSOUP学习分享(一)的更多相关文章

  1. ElasticSearch 5学习(7)——分布式集群学习分享2

    前面主要学习了ElasticSearch分布式集群的存储过程中集群.节点和分片的知识(ElasticSearch 5学习(6)--分布式集群学习分享1),下面主要分享应对故障的一些实践. 应对故障 前 ...

  2. ElasticSearch 5学习(6)——分布式集群学习分享1

    在使用中我们把文档存入ElasticSearch,但是如果能够了解ElasticSearch内部是如何存储的,将会对我们学习ElasticSearch有很清晰的认识.本文中的所使用的ElasticSe ...

  3. MySQL学习分享--Thread pool实现

    基于<MySQL学习分享--Thread pool>对Thread pool架构设计的详细了解,本文主要对Thread pool的实现进行分析,并根据Mariadb和Percona提供的开 ...

  4. Jsoup学习总结

    Jsoup学习总结 摘要 Jsoup是一款比较好的Java版HTML解析器.可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方 ...

  5. JavaScript Shell学习分享

    目录 JavaScript Shell学习分享 简介 安装 使用原因 小结 JavaScript Shell学习分享 简介 JavaScript Shell是由Mozilla提供的综合JavaScri ...

  6. python 学习分享-paramiko模块

    paramiko模块学习分享 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接.paramiko支持Linux, Solaris, BS ...

  7. Swagger框架学习分享

    Swagger框架学习分享 转至元数据结尾 Created and last modified by 刘新宇 大约1分钟曾经 pageId=162045803#page-metadata-start& ...

  8. Flink 从0到1学习—— 分享四本 Flink 国外的书和二十多篇 Paper 论文

    前言 之前也分享了不少自己的文章,但是对于 Flink 来说,还是有不少新入门的朋友,这里给大家分享点 Flink 相关的资料(国外数据 pdf 和流处理相关的 Paper),期望可以帮你更好的理解 ...

  9. Jsoup 学习笔记

    这里写自定义目录标题 Jsoup 学习笔记 解析 HTML 的字符串解析 URL 解析 本地文件解析 解析数据 DOM 解析 使用选择器解析 选择器概述 选择器组合用法 过滤用法 修改数据 HTML ...

随机推荐

  1. tyvj 1203 机器分配

    时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 总公司拥有高效生产设备M台,准备分给下属的N个公司.各分公司若获得这些设备,可以为国家提供一定的盈利.问:如何 ...

  2. 【Lintcode】036.Reverse Linked List II

    题目: Reverse a linked list from position m to n. Given m, n satisfy the following condition: 1 ≤ m ≤ ...

  3. 10 Vue 学习 shortList页面

    1: shortList页面代码如下: <template> <div class="fillcontain"> <head-top></ ...

  4. 排名Top 16的Java实用类库

    (转载: http://www.hollischuang.com/archives/1606) github地址: https://github.com/liufeiSAP/javaStudy.git ...

  5. [codeforces161D]Distance in Tree(点分治/树形dp)

    题意:求树上距离为k的点对个数: 解题关键:练习一下点分治不用容斥 而直接做的做法.注意先查询,后更新. 不过这个方法有个缺陷,每次以一个新节点为根,必须memset mp数组,或许使用map会好些, ...

  6. CodeForces 287B Pipeline (水题)

    B. Pipeline time limit per test 2 seconds memory limit per test 256 megabytes input standard input o ...

  7. 【机器学习】决策树C4.5、ID3

    一.算法流程 step1:计算信息熵 step2: 划分数据集 step3: 创建决策树 step4: 利用决策树分类 二.信息熵Entropy.信息增益Gain 重点:选择一个属性进行分支.注意信息 ...

  8. [Makefile] 递归编译的Makefile的实现

    转自:http://www.linuxidc.com/Linux/2017-01/139702.htm 最近写了一个递归Makefile,目的是既可以实现子模块的单独编译,也可以不做任何修改就和整个程 ...

  9. uoj#37. 【清华集训2014】主旋律(状压dp+容斥)

    传送门 第一眼容斥,然后我就死活容不出来了-- 记\(f_i\)为点集\(i\)中的点强联通的方案数,那么就是总的方案数减去使\(i\)不连通的方案数 如果\(i\)不连通的话,我们可以枚举缩点之后拓 ...

  10. 洛谷P4003 无限之环(费用流)

    传送门 神仙题啊……不看题解我可能一年都不一定做得出来……FlashHu大佬太强啦 到底是得有怎样的脑回路才能一眼看去就是费用流啊…… 建好图之后套个板子就好了,那么我们着重来讨论一下怎么建图 首先, ...