使用Jsoup实现java爬虫(非原创)
1,查看页面源代码,使用css或者JQuery选择器方式或元素节点选择
例如:
或者写成:Elements elements1 = Jsoup.connect("http://jb.999ask.com/jibing/ks/neike").get().select("ul.jbList li a");
文档的对象模型:
- 文档由多个Elements和TextNodes组成 (以及其它辅助nodes:详细可查看:nodes package tree).
- 其继承结构如下:
Document
继承Element
继承Node
.TextNode
继承Node
. - 一个Element包含一个子节点集合,并拥有一个父Element。他们还提供了一个唯一的子元素过滤列表。
2,利用Jsoup.Parse();解析文档
parse(String html, String baseUri)
这方法能够将输入的HTML解析为一个新的文档 (Document),参数 baseUri 是用来将相对 URL 转成绝对URL,并指定从哪个网站获取文档。如这个方法不适用,你可以使用 parse(String html)
方法来解析成HTML字符串如上面的示例。
parseBodyFragment
方法创建一个空壳的文档,并插入解析过的HTML到body
元素中。假如你使用正常的 Jsoup.parse(String html)
方法,通常你也可以得到相同的结果,但是明确将用户输入作为 body片段处理,以确保用户所提供的任何糟糕的HTML都将被解析成body元素。
Document doc = Jsoup.parseBodyFragment(html);
Element body = doc.body();
Document.body()
方法能够取得文档body元素的所有子元素,与 doc.getElementsByTag("body")
相同。
3.解析本地的HTML文件
可以使用静态 Jsoup.parse(File in, String charsetName, String baseUri)
方法: File 编码
baseUri
参数用于解决文件中URLs是相对路径的问题。如果不需要可以传入一个空的字符串。
File input = new File("/tmp/input.html");创建一个File对象
Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");
4.使用DOM遍历一个文档
Elements links = content.getElementsByTag("a");
for (Element link : links) {
String linkHref = link.attr("href");
String linkText = link.text();
}
* getElementById(String id)
* getElementsByTag(String tag)
* getElementsByClass(String className)
attr(String key)
获取属性attr(String key, String value)
设置属性attributes()
获取所有属性
5.设置一个元素的HTML内容
可以使用Element
中的HTML设置方法具体如下:
Element div = doc.select("div").first(); // <div></div>
div.html("<p>lorem ipsum</p>"); // <div><p>lorem ipsum</p></div>
div.prepend("<p>First</p>");//
在
div
前添加
html
内容
div.append("<p>Last</p>");//
在
div
之后添加
html
内容
//
添完后的结果
: <div><p>First</p><p>lorem ipsum</p><p>Last</p></div>
Element.html(String html)
这个方法将先清除元素中的HTML内容,然后用传入的HTML代替。Element.prepend(String first)
和Element.append(String last)
方法用于在分别在元素内部HTML的前面和后面添加HTML内容Element.wrap(String around)
对元素包裹一个外部HTML内容。
6.设置元素的文本内容
可以使用Element
的设置方法::
Element div = doc.select("div").first(); // <div></div>
div.text("five > four"); // <div>five > four</div>
div.prepend("First ");
div.append(" Last");
// now: <div>First five > four Last</div>
Element.text(String text)
将清除一个元素中的内部HTML内容,然后提供的文本进行代替Element.prepend(String first)
和Element.append(String last)
将分别在元素的内部html前后添加文本节点。
对于传入的文本如果含有像 <
, >
等这样的字符,将以文本处理,而非HTML。
.
使用Jsoup实现java爬虫(非原创)的更多相关文章
- Java爬虫利器HTML解析工具-Jsoup
Jsoup简介 Java爬虫解析HTML文档的工具有:htmlparser, Jsoup.本文将会详细介绍Jsoup的使用方法,10分钟搞定Java爬虫HTML解析. Jsoup可以直接解析某个URL ...
- Java爬虫框架 | 爬小说
Jsoup,Java爬虫解决方案,中文文档:jsoup 不得不说Java的生态真的好,原来我以为爬虫是只能用Pyhton来写的,结果发现Java的爬虫框架不要太多…… 一分钟你就可以写 ...
- java爬虫中jsoup的使用
jsoup可以用来解析HTML的内容,其功能非常强大,它可以向javascript那样直接从网页中提取有用的信息 例如1: 从html字符串中解析数据 //直接从字符串中获取 public stati ...
- java爬虫框架jsoup
1.java爬虫框架的api jsoup:https://www.open-open.com/jsoup/
- Java 表达式解析(非原创)
因项目需要,在网上找来一套表达式解析方法,由于原来的方法太过于零散,不利于移植,现在整理在同一文件内: 文件中包含5个内部类,源码如下: import java.util.ArrayList; imp ...
- Java爬虫系列三:使用Jsoup解析HTML
在上一篇随笔<Java爬虫系列二:使用HttpClient抓取页面HTML>中介绍了怎么使用HttpClient进行爬虫的第一步--抓取页面html,今天接着来看下爬虫的第二步--解析抓取 ...
- Java Interface 是常量存放的最佳地点吗?(转帖学习,非原创)
Java Interface 是常量存放的最佳地点吗?(转帖学习,非原创) 由于java interface中声明的字段在编译时会自动加上static final的修饰符,即声明为常量.因而inter ...
- 初识Java爬虫之Jsoup,提供参考代码
本文主要分享的是关于Java爬虫技术其中一个方式 ==> Jsoup 1.Jsoup简介 推开技术大门,爬虫技术琳琅满目,而今天要分享的Jsoup是一款Java的HTML解析神器,,可直接 ...
- java爬虫--jsoup简单的表单抓取案例
分析需求: 某农产品网站的农产品价格抓取 网站链接:点击打开链接 页面展示如上: 标签展示如上: 分析发现每日价格行情包括了蔬菜,水果,肉等所有的信息,所以直接抓每日行情的内容就可以实现抓取全部数据. ...
随机推荐
- PMP知识点(五)——配置管理
配置控制重点关注可交付成果及各个过程的技术规范,而变更控制则着眼于识别.记录.批准或否决对项目文件,可交付成果或基准的变更. 包括在实施整体变更控制过程中的部分配置管理活动有: 1.配置识别. 识别与 ...
- 2、jQuery的Ajax简单示例
一.创建一个JavaWEBProject 二.创建一个Servlet(下面的例子中用到了Json--第32行,Json的作用是将一个Object类转换为特定格式的字符串,如果不用Json直接返回字符串 ...
- git 命令详细
git是代码管理工具 github是基于git实现的代码管理平台 git --version 查看git版本 git remote -v 查看clone地址 git init 初始化git //全局设 ...
- 使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium)
抖音很火,楼主使用python随机爬取抖音视频,并且无水印下载,人家都说天下没有爬不到的数据,so,楼主决定试试水,纯属技术爱好,分享给大家.. 1.楼主首先使用Fiddler4来抓取手机抖音app这 ...
- sed 删除文本
sed删除文本命令可以将指定行或指定行范围进行删除,sed编辑命令的删除文本符号为 d,删除文本的格式为. [ sed]$ cat input [ sed]$ sed '/8/d' input 删除最 ...
- php 解密$OOO0O0O00=__FILE__
转自:https://www.cnblogs.com/g2star/p/3688350.html <?php // Copyright © 2009-2010 xxx.com 版权所有$OOO0 ...
- Android studio 常见错误修改
一,依赖冲突 All com.android.support libraries must use the exact same version specification (mixing versi ...
- 03-案例——多任务版TCP服务端程序开发
案例——多任务版TCP服务端程序开发 1. 需求 目前我们开发的TCP服务端程序只能服务于一个客户端,如何开发一个多任务版的TCP服务端程序能够服务于多个客户端呢?完成多任务,可以使用线程 ...
- TypeError: can only concatenate str (not "int") to str解决方式
使用format函数解决问题 for page in range(1,pagebox+1): url = "https://www.dd373.com/s/rbg22w-x9kjbs-wwf ...
- java----GUI和接口回调
GUI: 图形用户接口 import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java. ...