`
chenlong_1988
  • 浏览: 183423 次
  • 性别: Icon_minigender_2
社区版块
存档分类

jsoup test

 
阅读更多

import java.io.File;

import java.io.IOException;

import java.net.URL;

 

import org.jsoup.Jsoup;

import org.jsoup.nodes.Document;

import org.jsoup.nodes.Element;

import org.jsoup.safety.Whitelist;

import org.jsoup.select.Elements;

 

public class test {

 

/*

* Jsoup.parse(String html) [html:是html代码]

* Jsoup.parse(String html, String baseUri) [baseUri:是用来将相对 URL 转成绝对URL]

* Jsoup.parseBodyFragment(String html)

* Jsoup.connect(String url) [方法说明:从一个URL加载一个Document对象]

* Jsoup.parse(File in, String charsetName, String baseUri) [方法说明:根据一个文件加载Document对象]

* Jsoup.parse(File in, String charsetName) [方法说明:根据一个文件加载Document对象]

* */

public static void main(String[] args) {

/*

* parse(String html, String baseUri) 这方法能够将输入的HTML解析为一个新的文档 (Document),

* 参数 baseUri 是用来将相对 URL 转成绝对URL,并指定从哪个网站获取文档。

* 如这个方法不适用,你可以使用 parse(String html) 方法来解析成HTML字符串如上面的示例。

* 只要解析的不是空字符串,就能返回一个结构合理的文档,其中包含(至少) 一个head和一个body元素。

* 一旦拥有了一个Document,你就可以使用Document中适当的方法或它父类 Element和Node中的方法来取得相关数据。

* */

// 直接从字符串中输入 HTML 文档

String html = "<html><head><title> 开源中国社区 </title></head>"

 + "<body><p> 这里是 jsoup 项目的相关文章 </p></body></html>"; 

Document doc = Jsoup.parse(html); 

 

//只用一行代码就可以将html转成纯文本:

System.out.println(Jsoup.parse(html).text());

try {

 

/*

 * connect(String url) 方法创建一个新的 Connection, 和 get() 取得和解析一个HTML文件。

 * 如果从该URL获取HTML时发生错误,便会抛出 IOException,应适当处理。

 * Connection 接口还提供一个方法链来解决特殊请求,具体如下:

 * Document doc = Jsoup.connect("http://example.com")

 *   .data("query", "Java")

 *   .userAgent("Mozilla")

 *   .cookie("auth", "token")

 *   .timeout(3000)

 *   .post();

 *   这个方法只支持Web URLs (http和https 协议); 

 *   假如你需要从一个文件加载,可以使用 parse(File in, String charsetName) 代替。

 * */

 

// 从 URL 直接加载 HTML 文档

Document doc1 = Jsoup.connect("http://www.ibm.com/developerworks/cn/java/j-lo-jsouphtml/").get(); 

String title = doc1.title(); 

// System.out.println(title1);

 

Document doc2 = Jsoup.connect("http://www.ibm.com/developerworks/cn/java/j-lo-jsouphtml/") 

 .data("query", "Java")   // 请求参数

 .userAgent("I ’ m jsoup") // 设置 User-Agent 

 .cookie("auth", "token") // 设置 cookie 

 .timeout(3000)           // 设置连接超时时间

 .post();                 // 使用 POST 方法访问 URL 

 

 

// System.out.println(doc2.getAllElements());

 

/*

 * parse(File in, String charsetName, String baseUri) 这个方法用来加载和解析一个HTML文件。

 * 如在加载文件的时候发生错误,将抛出IOException,应作适当处理。

 * baseUri 参数用于解决文件中URLs是相对路径的问题。如果不需要可以传入一个空的字符串。

 * 另外还有一个方法parse(File in, String charsetName) ,它使用文件的路径做为 baseUri。

 * 这个方法适用于如果被解析文件位于网站的本地文件系统,且相关链接也指向该文件系统。 

 * */

 

// 在本机硬盘上有一个HTML文件,需要对它进行解析从中抽取数据或进行修改。�ĵ�

File input = new File("D:/test.htm");

Document doc3 = Jsoup.parse(input, "UTF-8","http://www.ibm.com/developerworks/cn/java/j-lo-jsouphtml//");

// System.out.println(doc3.html());

Element content = doc3.getElementById("ibm-masthead-dw");

Elements links = content.getElementsByTag("a");

for (Element link : links) {

String linkHref = link.attr("href");

String linkText = link.text();

// System.out.println(linkHref);

// System.out.println(linkText);

}

/*

* 这个select 方法在Document, Element,或Elements对象中都可以使用。

* 且是上下文相关的,因此可实现指定元素的过滤,或者链式选择访问。

* Select方法将返回一个Elements集合,并提供一组方法来抽取和处理结果

* */

 

Elements links2 = doc.select("a[href]"); // 具有 href 属性的链接��

// System.out.println(links2);

Elements gif = doc.select("img[src$=.gif]");// 所有引用 gif 图片的元素Ԫ��

// System.out.println(gif);

Element masthead = doc.select("div.masthead").first();// 找出定义了 class=masthead 的元素

// System.out.println(masthead);

//jsoup 的 attr 方法提供了一个 abs: 的操作

 

URL url = new URL("http://www.ibm.com/developerworks/cn/java/j-lo-jsouphtml/");

Document doc4 = Jsoup.parse(url, 3*5000);

 

Element link = doc4.select("a").first();

String relHref = link.attr("href"); // == "#ibm-content"

//链接包含主机地址

String absHref = link.attr("abs:href"); // "http://www.ibm.com/developerworks/cn/java/j-lo-jsouphtml/#ibm-content"

// System.out.println("relHref"+ relHref);

// System.out.println("absHref"+ absHref);

 

 

//脚本清除

String unsafe = "<p><a href='http://example.com/' onclick='stealCookies()'>Link</a></p>";

String safe = Jsoup.clean(unsafe, Whitelist.basic());

// now: <p><a href="http://example.com/" rel="nofollow">Link</a></p>

System.out.println(safe);

/*

 * 在解析文档的同时,我们可能会需要对文档中的某些元素进行修改,

 * 例如我们可以为文档中的所有图片增加可点击链接、修改链接地址或者是修改文本等。

 * */

doc.select("div.comments a").attr("rel", "nofollow"); 

// 为所有链接增加 rel=nofollow 属性

doc.select("div.comments a").addClass("mylinkclass"); 

// 为所有链接增加 class=mylinkclass 属性

doc.select("img").removeAttr("onclick"); // 删除所有图片的 onclick 属性

doc.select("input[type=text]").val(""); // 清空所有文本输入框中的文本

 

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

 

}

 

}


分享到:
评论

相关推荐

    JsoupDemo可运行的完整工程

    java JsoupDemo 提取所有链接 完整工程 可运行

    Jsoup集成代理ip设置功能

    在Jsoup.jar中集成代理ip的设置功能,方便用户使用, 例:Jsoup.connect("http://1212.ip138.com/ic.asp").proxy("test.proxy.mayidaili.com", 8123, null).header("Proxy-Authorization", authHeader).get();

    Jsoup+httpclient 模拟登陆和抓取

    private static final String toUrl = "d:\\test\\"; private static final String css = "http://user.goodjobs.cn/personal.css"; private static final String Img = "http://user.goodjobs.cn/images"; ...

    xsoup:当jsoup遇到XPath时

    基于Jsoup的XPath选择器。 开始使用: @Test public void testSelect() { String html = " &lt;html&gt;&lt;div&gt;&lt;a href='https://github.com'&gt;github.com&lt;/a&gt;&lt;/div&gt; " + " &lt;table&gt;&lt;tr&gt;&lt;td&gt;a&lt;/td&gt;&lt;td&gt;b&lt;/td&gt;&lt;/tr&gt;...

    HTML抽取器Xsoup.zip

    public void testSelect() { String html = "&lt;html&gt;&lt;div&gt;&lt;a href='https://github.com'&gt;github.com&lt;/a&gt;&lt;/div&gt;&lt;/html&gt;"; Document document = Jsoup.parse(html); String result = Xsoup.select...

    初级java笔试题-web2rdf:网络2rdf

    初级java笔试题网络2rdf ...test_package ; import edu.stanford.nlp.tagger.maxent.MaxentTagger ; import org.jsoup.Jsoup ; import org.jsoup.nodes.Document ; import org.jsoup.select.Elements ; import java.

    基于微服务的车票管理系统源码+项目说明+sql数据库.tar

    #### 涉及技术栈:MySQL,Redis,RabbitMQ,MybatisPlus,SpringBoot,SpringCloud,Seata,Sentinel,Gateway,Jsoup,Nginx,Docker *** &gt;管理员样例 &gt;&gt; 账号:wsh &gt;&gt; 密码:wsh &gt;&gt; &gt;普通用户样例 &gt;&gt; 账号:...

    基于 SpringBoot 开发的超简洁音乐播放器+源代码+文档说明

    技术栈:springboot + thymeleaf + layui + spring security + jsoup + mybatis plus + mysql ## 1. 系统说明 ### 1.1 配置文件 #### 1.1.1 SQL 文件 文件位置: - woodwhales-music/doc/sql/open_music_适用...

    java jar包

    betwixt-0.8 commons-cli-1.1 commons-codec-1.3 commons-codec-1.4 commons-collections-3.2.1-javadoc commons-collections-3.2.1-sources commons-collections-3.2.1 commons-collections-testframework-3.2.1 ...

    scrapping:用于在 Java 中进行报废的不同框架

    Maven 3 + JUnit + Jsoup + HTMLUnit + HTMLParser汤( ) 参见: com.aj.scrapping.test.JsoupTest.javaHTML单元( ) 参见: com.aj.scrapping.test.HTMLUnitTest.javaHTML解析器( ) 参见: ...

    WebCrawler:WebCrawler测试

    要求:Maven: ://maven.apache.org/ Gson: : JSoup: ://jsoup.org/ 运行控制台应用程序mvn编译mvn exec:java -Dexec.mainClass =“ org.sainsbury.com.Console” 为控制台应用程序mvn test运行单元测试

    crawler-service

    spring-boot-starter 2.0.3.RELEASE jsoup 1.8.3 Lombok1.16.22 spring-boot-starter-security 2.0.3.RELEASE spring-boot-starter-test 2.0.3.RELEASE Spring安全测试2.0.3.RELEASE 休息服务呼叫的请求发布示例 ...

    yavijava_generator:代码生成器可帮助根据 html 文档生成尽可能多的 yavijava

    测验测试可以在 src/test 包中找到。 如果您提交拉取请求,您的拉取请求应该在适用的情况下进行测试,否则拉取请求将不会被合并。 在提交拉取请求之前,请确保先运行测试,以确保所做的更改不会破坏测试。 要运行

    Keenbo:搜寻器和搜寻引擎

    mvn test 建于 Spark-用于运行mapreduces Kafka-用于处理链接队列 ElasticSearch-用于运行搜索查询 Redis-用于检查重复的页面 HBase-用于存储数据 DropWizard-用于监视 JSoup-用于解析页面 咖啡因-用于存储请求的...

    springmvc 各种jar包

    38,jsoup-1.7.2.jar 39,jta-1.1.jar 40,junit-dep-4.10.jar 41,log4j-1.2.16.jar 42,lucene-3.5.0.jar 43,mail-1.4.4.jar 44,mchange-commons-java-0.2.3.4.jar 45,mysql-jdbc-5.1.25.jar 46,oracle-jdbc-...

    carrecorder:行车记录仪与车载终端之采集小程序

    carrecorder 行车记录仪与车载终端之采集小程序 1 、道路监控平台的采集 2、车载终端信息采集 3、持久化入库 4、bom分析、功能分析、竞品分析和...jsoup httpcomponent httparser common-logging test jdk 1.7/jdk1.8

    积分管理系统java源码-leedaneSpringBoot:leedane服务器端的springboot集成版本

    积分管理系统java源码 #说在前面的话 最近在其他技术论坛上看到微服务的入门级微框架springboot,感觉还是...Jsoup实现对网站的爬虫和解析 Redis对用户信息/文章/心情等进行缓存 用springMVC来支持restful接口风格 Solr

    html-docx:html转word,留个痕迹,转自它处

    #html2word 只能在Windows环境下进行在项目的testhtml2word目录下,Jacobutils.class,需要在jdk目录下的bin下放入jacob.dll,并且在引入jacob.jar,jsoup.jar原文链接 js 可以实现在linux下html2word在simple....

    dom4j-jdom封装和解析例子

    String filepath="D:/test/map1.xml"; File f=new File(filepath); if(!f.exists()){ f.createNewFile(); } //List&lt;Pois&gt; list=getReaderXml("URL"); List&lt;Pois&gt; list=getReaderXml("FILE"); org....

    autoJS1688示例.zip

    JD_Captcha_Test.js jimu.js jm_plp.js jquery1.js jsdroid.js json格式化.js jsoupDemo.js JS代码加密例子.js js加密器.js js块级作用域.js js查询.js js进阶教程02.js js进阶教程03.js juexin_Qtiao...

Global site tag (gtag.js) - Google Analytics