`

使用jsoup解析一篇文章示例

阅读更多
jar包下载地址:http://jsoup.org/download
<%@ page import="little.util.Utils" %>
<%@ page import="org.jsoup.nodes.Element" %>
<%@ page import="org.jsoup.Jsoup" %>
<%@ page import="org.jsoup.nodes.Document" %>
<%@ page import="org.jsoup.select.Elements" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.TreeMap" %>
<%@ page import="java.util.Iterator" %>
<%@ page contentType="text/html;charset=GBK" language="java" %>

<%
    String url = "http://www.yi-see.com/art_10630_3518.html";
    //设置代理访问
    String html = Utils.readHtml4Get(url, true);
    Document doc = Jsoup.parse(html);
	//查找包含<a href="read_">内容
    Elements clicks = doc.select("a[href*=read_]");
    Map<Integer,String> map = new TreeMap<Integer,String>();
    long startTime = System.currentTimeMillis();
    //使用jsoup解析页面-页码与地址放在treemap中排序
    for(Element et : clicks){
        map.put(Utils.regexNum(et.text()),et.attr("href"));
    }
    String str = "";
    StringBuffer buffer = new StringBuffer();
    for(Iterator it = map.entrySet().iterator();it.hasNext();){
        Map.Entry entry = (Map.Entry)it.next();
		//页码,升序顺序;
        Integer key = (Integer)entry.getKey();
		//链接url
        String value = (String)entry.getValue();
        System.out.println("key="+key+">>>value="+value);
		//拼出绝对链接
        url = "http://www.yi-see.com/"+value;
        html = Utils.readHtml4Get(url, true);
        doc = Jsoup.parse(html);
		//定位到<td class="ART">标签,就是文章内容
        clicks = doc.select("td[class=ART]");
        for(Element et : clicks){
            str = et.toString();
            break;
        }
        //过滤尾部
        str = str.replace(" <div class=\"FL\">\n" +
                "   请按 Ctrl+D 将本页加入书签\n" +
                " </div><a href=\"feedback.php\" target=\"_blank\">提意见或您需要哪些图书的全集整理?</a><a><br /></a><a href=\"feedback.php?GJB=举报\" target=\"_blank\">举报</a><a><span class=\"mr\">【网站提示】 读者如发现作品内容与法律抵触之处,请向本站举报。 非常感谢您对易读的支持!</span><br />&nbsp;</a>","");
        buffer.append("++++++++++++++++ <br />");
        buffer.append("    第"+key+"页:   <br />");
        buffer.append("++++++++++++++++ <br />");
        buffer.append(str);
    }
    out.print(buffer.toString());
    System.out.println("共用时:" + (double)(((System.currentTimeMillis() - startTime) / 1000) / 60) + " 分钟");
%>



Utils方法:
    //\\u4E00-\\u9FA5\\uF900-\\uFA2D是指汉字的Unicode编码范围
    private static final Pattern REGEX_NUM = Pattern.compile("(^[\\u4E00-\\u9FA5\\uF900-\\uFA2D])(\\d+)([\\u4E00-\\u9FA5\\uF900-\\uFA2D])?");
    public static int regexNum(String str){
        Matcher matcher = REGEX_NUM.matcher(str);
        if(matcher.matches()){
            return Integer.parseInt(matcher.group(2));
        }
        return 0;
    }
分享到:
评论
2 楼 yuchttp 2014-10-06  
你好
如果抓取的的URL里有中文字符,请问要怎么处理,才能正常访问
1 楼 newmach 2013-04-07  
package snippet;

import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;

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

public class Snippet {
public static void main(String agrs[])
{
    String url = "http://www.yi-see.com/art_10630_3518.html";
    //设置代理访问

    Document doc = null;
try {
doc = Jsoup.connect(url).timeout(30000).get();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
};
    Elements clicks = doc.select("a[href^=read_]");
    Map<Integer,String> map = new TreeMap<Integer,String>();
    long startTime = System.currentTimeMillis();
    //使用jsoup解析页面-页码与地址放在treemap中排序
    for(Element et : clicks){
        map.put(Utils.regexNum(et.text()),et.attr("href"));
    }
    String str = "";
    StringBuffer buffer = new StringBuffer();
    for(Iterator it = map.entrySet().iterator();it.hasNext();){
        Map.Entry entry = (Map.Entry)it.next();
//页码,升序顺序;
        Integer key = (Integer)entry.getKey();
//链接url
        String value = (String)entry.getValue();
        System.out.println("key="+key+">>>value="+value);
//拼出绝对链接
        url = "http://www.yi-see.com/"+value;

        try {
doc = Jsoup.connect(url).timeout(30000).get();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//定位到<td class="ART">标签,就是文章内容
        clicks = doc.select("td[class=ART]");
        for(Element et : clicks){
            str = et.toString();
            break;
        }
        //过滤尾部
        str = str.replace(" <div class=\"FL\">\n" +
                "   请按 Ctrl+D 将本页加入书签\n" +
                " </div><a href=\"feedback.php\" target=\"_blank\">提意见或您需要哪些图书的全集整理?</a><a><br /></a><a href=\"feedback.php?GJB=举报\" target=\"_blank\">举报</a><a><span class=\"mr\">【网站提示】 读者如发现作品内容与法律抵触之处,请向本站举报。 非常感谢您对易读的支持!</span><br />&nbsp;</a>","");
        buffer.append("++++++++++++++++ <br />");
        buffer.append("    第"+key+"页:   <br />");
        buffer.append("++++++++++++++++ <br />");
        buffer.append(str);
    }
    System.out.print(buffer.toString());
    System.out.println("共用时:" + (double)(((System.currentTimeMillis() - startTime) / 1000) / 60) + " 分钟");
}

}

相关推荐

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

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

    Android使用Jsoup解析Html表格的方法

    总的来说,Android结合Jsoup解析HTML表格涉及的关键点包括:获取HTML字符串,解析HTML,使用选择器定位表格元素,遍历并处理表格行和列,以及将HTML内容转化为Android UI组件。通过熟练掌握这些步骤,你可以构建出...

    使用 jsoup 对 HTML 文档进行解析和操作

    这篇博客主要探讨了如何利用 jsoup 这个 Java 库来解析和操作 HTML 文档。jsoup 是一个强大的库,它提供了丰富的 API,可以方便地解析 HTML、提取结构化数据以及修改文档内容。本文将详细介绍 jsoup 的核心功能,并...

    jsoup+httpclient

    4. **解析HTML**:用JSoup解析响应内容,使用CSS选择器找到视频列表和播放链接。 5. **数据提取**:提取出每个视频的标题、链接等信息。 6. **处理结果**:将提取的数据存储或展示,如果需要,可以递归处理分页。 ...

    itextpdf测试样例和jar jsoup使用说明

    在这篇文章中,我们将深入探讨这两个库的功能、用法以及如何在项目中使用它们。 首先,iTextpdf是一个强大的Java库,允许开发者创建、修改和操作PDF文档。它提供了丰富的API,可以用于生成复杂的表格、添加文本、...

    jsoupAPI中文版

    解析一个body片断** - **问题**:有一个HTML片断(如一个div包含一对p标签;一个不完整的HTML文档),需要对其进行解析。 - **解决方案**:使用 `Jsoup.parseBodyFragment(String html)` 方法。 - 示例代码:`...

    Jsoup抓取整个网站

    在本篇中,我们将深入探讨如何使用Jsoup来抓取整个网站,并将其保存到本地,包括CSS、JavaScript、图片以及各个页面。 首先,我们需要了解Jsoup的基本用法。Jsoup通过建立一个HTTP连接到目标网站,然后解析返回的...

    jsoup demo

    在本篇详尽的讨论中,我们将深入探讨 jsoup 的核心概念,包括其基本用法、解析HTML文档、选择元素、提取数据以及修改HTML结构。同时,我们还会参考提供的帮助文档API,了解如何高效地利用这个库。 ### 1. 安装与...

    jetty 8 嵌入web 及Jsoup测试

    在这篇内容中,我们将深入探讨Jetty 8的嵌入式使用方法以及如何结合Jsoup进行Web测试。 1. **Jetty 8嵌入式Web服务器** - **嵌入式概念**:与传统的独立运行的Web服务器不同,嵌入式Web服务器是直接在应用程序代码...

    Android 解析html

    下面是一个简单的Android应用中使用JSoup解析HTML的示例: ```java public class MainActivity extends AppCompatActivity { private static final String URL = "http://example.com"; @Override protected ...

    jsoup网络爬虫

    在本篇文章中,我们将深入探讨如何使用JSoup构建一个简单的Java HTML爬虫,并学习如何统计词频以及归纳搜索结果。 1. **JSoup简介** JSoup的核心功能在于它能够解析HTML,就像浏览器一样理解页面结构。它提供了...

    Java 爬虫jsoup简单的demo

    本篇文章将深入探讨如何使用Jsoup进行简单的网页抓取,并将抓取的数据写入Excel的多个工作表。 首先,我们要了解Jsoup的基本用法。Jsoup的核心功能在于解析HTML文档,通过其提供的选择器语法,我们可以像操作DOM...

    用于Html文件解析的jar包

    Jsoup是一个非常流行的选择,它提供了一种易于使用的API来解析HTML,同时支持CSS选择器,使得数据提取变得简单直观。而TagSoup则专注于处理不规范的HTML,它可以解析那些在实际网页中常见的乱七八糟的HTML标签和属性...

    spider.rar

    具体实现时,可以先定义一个URL类来管理链接,再创建一个下载类处理HTTP请求,接着使用Jsoup解析返回的HTML,最后将提取的数据存储到文件或数据库中。 "JAVA实现爬虫网站首页"这个知识点进一步扩展了网络爬虫的应用...

    使用java的html解析器实现自动重复抓取任意网站页面归类.pdf

    本篇文章将详细讲解如何使用Jsoup来实现自动重复抓取任意网站页面并进行归类。 **一、Jsoup简介** Jsoup是一个用于处理实际世界HTML的Java库。它提供了非常方便的API来提取和操作数据,其核心特性包括: 1. **...

    Java爬虫入门教程:CSDN文章抓取全攻略.zip

    接着,你可以编写一个Java类,使用Jsoup连接CSDN文章的URL,然后解析HTML内容。以下是一个简单的示例,展示了如何获取文章标题: ```java import org.jsoup.Jsoup; import org.jsoup.nodes.Document; public class...

    Java爬虫技术分享:CSDN文章批量抓取方法.zip

    2. **获取文章列表**:通过分析CSDN的文章列表页面,确定URL模式和页面结构,然后利用Jsoup解析HTML,提取文章标题、作者、链接等信息。 3. **抓取文章内容**:根据每篇文章的链接,发送新的GET请求获取文章详情页,...

    wangluobiancheng.rar

    2. **使用Jsoup库解析** Jsoup是一款强大的Java库,专为HTML解析而设计。它提供了简洁的API,使得解析HTML如同操作DOM树一样简单。在Android项目中,我们可以通过添加Jsoup依赖来使用它。例如,解析某个元素: ```...

Global site tag (gtag.js) - Google Analytics