`
bibiQ
  • 浏览: 8937 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Jsoup解析网页、文件

阅读更多
Jsoup网站:http://jsoup.org/
所有的使用方法都可以从api获得,api地址:http://jsoup.org/apidocs/
html的结构,可以参考wiki:http://en.wikipedia.org/wiki/HTML_element
----------------------Jsoup连接---------------------
连接url:
import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

public class JsoupTest {

	public static void main(String[] args) {
		Document doc = null;
		String url = " http://slashdot.org/";
		try {
			doc = Jsoup
					.connect(url)
					.header("User-Agent",
							"Mozilla/5.0 (Windows; U; Windows NT 5.2) Gecko/2008070208 Firefox/3.0.1")
					.header("Accept", "text ml,application/xhtml+xml").header(
							"Accept-Language", "zh-cn,zh;q=0.5").header(
							"Accept-Charset", "GB2312,utf-8;q=0.7,*;q=0.7")
					.get();
			Element body = doc.body();
			System.out.println(body.text());

		} catch (IOException e) {
			e.printStackTrace();
		}

	}
}

为了方便的话,可以直接使用:
doc = Jsoup.connect(url).get();

连接htm文件,将doc部分替换如下:
String baseUrl = "";
File input = new File(url);
Document doc = Jsoup.parse(input, "UTF-8", baseUrl);


----------------------Jsoup解析---------------------
解析部分使用的是Selector方法。
例如,将网页保存成.htm文件后,见附件,下面只显示该网页的一个片段:
<div id="bodycol"><div id="jobheadertop">&nbsp;</div><div id="jobheader"><img border="0" src="./102708474_files/pixel.gif" alt="DiSalvo LLC" id="companyLogo" class="logo" onerror="removeLogo()"><p id="companyNameHeader" style="display: block; ">DiSalvo LLC recruiting</p>
          <div id="subicons"><img src="./102708474_files/pixel(1).gif" height="1" width="1" alt="" style="margin:0px"></div><div style="clear:both;height:1px">&nbsp;</div><div id="jobheaderbottom">&nbsp;</div></div><div id="jobwrappertop2">&nbsp;</div><div id="jobwrapper">
          <div id="jobsummary">
            <div id="jobsummary_content">
              <h2>Job Summary</h2>
              <dl>
                <dt>Company</dt>
                <dd><span class="wrappable">DiSalvo LLC recruiting</span></dd>
                <dt>Location</dt>
                <dd><span class="wrappable">Tigard, OR 97223</span></dd>
                <dt>Industries</dt>
                <dd><span class="wrappable">All</span></dd>
                <dt>Job Type</dt>
                <dd class="multipledd"><span class="wrappable">Full Time</span></dd><dd class="multipleddlast"><span class="wrappable"> Employee</span></dd>
                <dt>Years of Experience</dt>
                <dd><span class="wrappable">2+​ to 5 Years</span></dd>
                <dt>Career Level</dt>
                <dd><span class="wrappable">Experienced (Non-Manager)</span></dd>
                <dt>Salary</dt>
                <dd><span class="wrappable">$47,000.​00 - $49,000.​00  /​year<br>$7k per year expense acct, medical, dental, 401K, uncapped commissions</span></dd>
              </dl>
            </div>
          </div>
          <div id="jobcopy">
            <h1>Sales Representative</h1>
            <h2>About the Job</h2>
            <div id="jobBodyContent">


想提取出<div id="jobsummary">的片段,那么使用:
private String seletorJobSum = "div#jobsummary";
Elements elements = element.select(seletorJobSum);
if(elements.size() == 0){
	return null;
}
Element section = elements.first();


想提取出Salary标签下面的值,如
<dt>Salary</dt>
<dd><span class="wrappable">$47,000.​00 - $49,000.​00  /​year<br>$7k per year expense acct, medical, dental, 401K, uncapped commissions</span></dd>

可以使用:
private String selectorSalary = "dt:contains(Salary) + dd";
Elements salaries = section.select(selectorSalary);

可以得到结果:
引用

<dd>
<span class="wrappable">$47,000. 00 - $49,000. 00 / year<br />$7k per year expense acct, medical, dental, 401K, uncapped commissions</span>
</dd>

在下例中,如果要根据Job Information这个关键字取出其下的Company等结构,
</div><br class="brclear"><div id="CJT_leftpanel">
                <h2>Job Information</h2>
                <div id="CJT_leftHolder">
                  <div>
                    <ul>
                      <li><strong>Company:</strong><br>Mount Sinai Medical Center</li>
                      <li><strong>Location:</strong><br>New York, NY</li>
                      <li><strong> Industries:</strong><br>Healthcare Services</li>
                      <li><strong>Job Status/Type:</strong><br>Full Time, Employee</li>
                      <li><strong> Occupation:</strong><br>Administrative Support<br />Secretary/Executive Assistant</li>
                      <li><strong>Category:</strong><br>Administrative/Clerical</li>
                      <li><strong>Years of Experience:</strong><br>2+ to 5 Years</li>
                      <li><strong>Education Level:</strong><br>High School or equivalent</li>
                      <li><strong>Career Level:</strong><br>Experienced (Non-Manager)</li>
                      <li><strong>Job Reference Code:</strong><br>11-1345374</li>
                      <div id="CJT_bottom"><a href="https://mountsinai.igreentree.com/CSS_External/CSSPage_Referred.asp?Req=11-1345374" mns_rt="Apply"><img src="http://media.newjobs.com/mm/xmsinaix/images/apply_left.jpg" alt="Apply Now"></a></div>
                    </ul>
                  </div>
                  <div><img src="http://media.newjobs.com/mm/xmsinaix/images/left_bottom.jpg"></div>
                  <h2>Contact Us</h2>
                  <ul>
                    <li><strong> Company Name:</strong><br>Mount Sinai Medical Center</li>
                  </ul>
                  <div><img src="http://media.newjobs.com/mm/xmsinaix/images/left_bottom.jpg"></div>
                </div>
              </div>

使用
seletor = "h2:contains(Job Information) + div";


未完待续
分享到:

相关推荐

    jsoup解析xml文件

    **jsoup解析XML文件** jsoup是一个非常流行的Java库,主要设计用于处理HTML文档,但它也支持解析XML。这个库提供了简洁的API,使得提取和操作网页数据变得异常简便。在给定的资源中,我们可以看到一个使用jsoup解析...

    利用jsoup解析网页

    如果网页内容依赖JavaScript,可能需要使用如Selenium这样的工具先运行页面,再用jsoup解析生成的HTML。 **总结** jsoup是Java中处理HTML的强大工具,其简单易用的API使得网页解析变得轻松。通过学习和实践,你...

    Jsoup库文件;Jsoup解析Java包

    此外,Jsoup还提供了链接处理能力,可以解析页面上的链接,包括相对链接和绝对链接,这对于网页爬虫和数据抓取来说非常有用。 XML解析方面,虽然Jsoup主要设计用于HTML处理,但它也具备解析XML文档的能力。XML与...

    android使用jsoup 解析html文件

    在Android开发中,有时我们需要处理HTML内容,例如从网络获取数据、解析网页或者在本地存储HTML文件。在这个场景下,`jsoup`是一个非常实用的库,它可以帮助我们轻松地解析和操作HTML文档。本文将深入探讨如何在...

    Jsoup解析html的示例

    在Android开发中,Jsoup尤其有用,因为它能够帮助开发者从网页中提取结构化数据,这对于网络爬虫或者任何需要从网页获取信息的应用来说是至关重要的。 **一、Jsoup的基本用法** 1. **引入依赖** 在Android项目中...

    Jsoup解析html+xml

    三、Jsoup解析XML 虽然Jsoup主要用于HTML,但它也能处理XML文档,不过需要注意的是,XML的解析规则比HTML严格。在处理XML时,需要设置`Parser.xmlParser()`。 ```java String xml = "&lt;root&gt;&lt;item id='1'&gt;Item 1...

    用Jsoup解析html的所有jar包

    这个压缩包文件“用Jsoup解析html的所有jar包”显然是包含了使用Jsoup进行HTML解析所需的全部依赖。 首先,我们需要了解Jsoup的基本用法。Jsoup的核心功能在于它能够通过连接到一个URL或读取本地HTML文件来获取HTML...

    Jsoup源码以及chm文件

    1. 解析HTML:Jsoup能够将HTML字符串转换为一个DOM(Document Object Model)结构,类似于浏览器解析网页的方式。这样,开发者可以通过DOM API来查询和操作网页元素。 2. CSS选择器:Jsoup支持CSS选择器,使得从...

    使用jsoup获取网页内容并修改

    **使用Jsoup获取网页内容并修改** Jsoup是一款强大的Java库,它允许开发者方便地解析、操作和提取HTML内容。在Android开发中,Jsoup常用于网页数据抓取和页面内容的处理。以下将详细解释如何使用Jsoup来实现这个...

    jsoup解析网页

    2. **解析网页** 在jsoup中,首先需要连接到目标URL,这可以通过`Jsoup.connect(url).get()`方法实现。这个方法会返回一个`Document`对象,代表了网页的HTML结构。之后,我们可以使用CSS选择器来定位和提取所需元素...

    jsoup解析HTML

    在名为"NewSipder"的项目中,你可能正在构建一个网络爬虫,利用JSoup解析HTML内容。爬虫可能包括以下步骤: 1. **设置连接参数**:配置Jsoup连接,如超时时间、重试次数等。 2. **抓取页面**:使用`Jsoup.connect()...

    jsoupAPI解析html

    提供的文件`jsoup-1.7.2_API.CHM`和`jsoup1.6.1全.zip`包含了不同版本的jsoup API文档和库文件。CHM文件是Windows帮助文档格式,可以直接查看API详情。zip文件则包含了完整的源码和库文件,方便进一步学习和开发。 ...

    jsoup解析html所需包1.7.3

    标题中的"jsoup解析html所需包1.7.3"表明我们将讨论的是JSoup 1.7.3版本,这个版本包含了三个关键的组件。 1. **jsoup-1.7.3.jar**:这是JSoup的核心库文件,包含了所有用于解析HTML的类和方法。开发人员在项目中...

    Jsoup操作解析Html文件

    例如,可以先发送一个GET请求获取HTML,然后用Jsoup解析其中的JavaScript动态加载的数据源,再发送额外的请求来获取这些资源。 此外,Jsoup的兼容性极佳,它能很好地处理各种不规范的HTML,尽可能地恢复其结构,这...

    Android使用Jsoup技术解析HTML

    // 连接并解析网页 return Jsoup.connect(urls[0]).get(); } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Document doc) { // 在这里处理...

    jsoup解析返回的html

    以上就是关于使用JSoup解析HTML的一些基础知识,包括如何连接网页、获取HTML、使用CSS选择器、遍历元素、修改属性以及提取链接等内容。在实际开发中,JSoup的灵活性和强大功能使其成为处理HTML文档的得力工具。

    使用Jsoup对Html文件解析

    在本文中,我们将深入探讨如何使用Jsoup解析HTML文件,并进一步将解析的数据导出到Excel表格。 首先,我们需要理解Jsoup的基本用法。Jsoup的核心在于`Connection`和`Document`对象。`Connection`用于建立与网页的...

    httpClient+jsoup 抓取网页数据

    在"网易贵金属"的例子中,你可能需要使用HttpClient发送GET请求到网易贵金属的页面,然后使用Jsoup解析返回的HTML,找到包含贵金属价格、新闻等信息的部分,从而实现数据抓取。实际操作时,可能还需要考虑登录、分页...

    使用Jsoup库解析HTML、XML或URL链接中的DOM节点

    接下来,我们将探讨如何使用Jsoup解析HTML内容: 1. **连接URL并解析** 使用Jsoup的`connect()`方法,可以建立到指定URL的连接,并获取HTML内容。然后调用`get()`方法,解析返回的HTML字符串。 ```java ...

    Jsoup解析Html获取新闻列表

    在本文中,我们将深入探讨如何利用Jsoup解析HTML,以便获取新闻列表等网页数据。首先,让我们了解Jsoup的基本用法,然后通过实例演示如何从一个HTML页面中提取新闻列表。 1. **Jsoup简介** - Jsoup是由Jonathon ...

Global site tag (gtag.js) - Google Analytics