- 浏览: 635130 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
yuchttp:
你好如果抓取的的URL里有中文字符,请问要怎么处理,才能正常访 ...
使用jsoup解析一篇文章示例 -
jsdsh:
好人啊!祝你好运
spket-1.6.16.jar下载见附件 -
CindyLiao:
为什么我这里url总是报链接错误,不是传过去的action的值 ...
jquery form插件 上传/导入excel-ajax验证 -
tianpengwei:
谢谢 特别感谢
spket-1.6.16.jar下载见附件 -
smilet:
3Q!
去掉google搜索结果的跳转(http://www.google.com/url?), 而直接用原始链接
jar包下载地址:http://jsoup.org/download
Utils方法:
<%@ 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 /> </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里有中文字符,请问要怎么处理,才能正常访问
如果抓取的的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 /> </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) + " 分钟");
}
}
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 /> </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) + " 分钟");
}
}
发表评论
-
jquery form插件 上传/导入excel-ajax验证
2013-01-30 21:48 21532为了看着界面舒服,我这里用到了bootstrap,还用到jqu ... -
【转】JVM垃圾回收机制
2012-12-11 22:04 860每个Java程序员迟早都会碰到下面这个错误: jav ... -
【转】Java防止SQL注入
2012-10-09 17:36 939SQL 注入简介: ... -
【转】JSTL 标签库详细介绍资料
2012-08-16 11:05 811前言从jsp 1.1规范开始,jsp就支持在jsp中使用 ... -
【转】使用 JAVA 中的动态代理实现数据库连接池
2012-08-13 17:13 887转载地址:http://www.ibm.com/develop ... -
jsp 理解301和302的区别
2012-05-21 17:35 2690301状态码: response.setStatus(30 ... -
jsp - 下载gzip压缩文件
2012-05-18 16:01 1337out.clearBuffer(); //获取文件地址 ... -
【转】Java 性能优化之 String 篇
2012-05-16 12:23 1080转载地址:http://www.ibm.com/develop ... -
收藏Google Analytics api - java版地址
2012-03-13 10:38 1209收藏Google Analytics api java版地址: ... -
java文件上传和上传excel后并解析出来的小工具
2011-11-20 18:12 1520支持上传中文文件名及数据; 支持上传gif,jpg,png, ... -
【转】使用 jsoup 对 HTML 文档进行解析和操作
2011-11-10 15:52 635转载地址:http://www.ibm.com/develop ... -
【转】深入分析 Java I/O 的工作机制
2011-11-01 22:15 710转载地址:http://www.ibm.com/develop ... -
【转】实战 Lucene,第 1 部分: 初识 Lucene
2011-10-22 00:49 823转载地址:http://www.ibm.com/develop ... -
【转】几种任务调度的 Java 实现方法与比较
2011-09-11 19:14 1118简介: 综观目前的 Web ... -
【转】JVM内存回收理论与实现
2011-09-05 18:27 959在本篇中,我们将继续 ... -
解决ajax传到jsp乱码 解决方法之一
2011-09-05 12:00 900解决ajax传到jsp乱码 解决方法之一 ajax页面和js ... -
【转】Servlet 工作原理解析
2011-09-02 09:23 700转载地址:http://www.ibm.com/develop ... -
【转】理解Java ClassLoader机制
2011-07-28 09:27 829当JVM(Java虚拟机)启动 ... -
【转】程序员技术练级攻略
2011-07-19 18:24 789月光博客6月12日发表了《写给新手程序员的一封信 》,翻译自 ... -
关于 Java 中 finally 语句块的深度辨析
2011-07-15 09:33 771文章地址:http://www.ibm.com/develop ...
相关推荐
接下来,我们将探讨如何使用Jsoup解析HTML内容: 1. **连接URL并解析** 使用Jsoup的`connect()`方法,可以建立到指定URL的连接,并获取HTML内容。然后调用`get()`方法,解析返回的HTML字符串。 ```java ...
总的来说,Android结合Jsoup解析HTML表格涉及的关键点包括:获取HTML字符串,解析HTML,使用选择器定位表格元素,遍历并处理表格行和列,以及将HTML内容转化为Android UI组件。通过熟练掌握这些步骤,你可以构建出...
这篇博客主要探讨了如何利用 jsoup 这个 Java 库来解析和操作 HTML 文档。jsoup 是一个强大的库,它提供了丰富的 API,可以方便地解析 HTML、提取结构化数据以及修改文档内容。本文将详细介绍 jsoup 的核心功能,并...
4. **解析HTML**:用JSoup解析响应内容,使用CSS选择器找到视频列表和播放链接。 5. **数据提取**:提取出每个视频的标题、链接等信息。 6. **处理结果**:将提取的数据存储或展示,如果需要,可以递归处理分页。 ...
在这篇文章中,我们将深入探讨这两个库的功能、用法以及如何在项目中使用它们。 首先,iTextpdf是一个强大的Java库,允许开发者创建、修改和操作PDF文档。它提供了丰富的API,可以用于生成复杂的表格、添加文本、...
解析一个body片断** - **问题**:有一个HTML片断(如一个div包含一对p标签;一个不完整的HTML文档),需要对其进行解析。 - **解决方案**:使用 `Jsoup.parseBodyFragment(String html)` 方法。 - 示例代码:`...
在本篇中,我们将深入探讨如何使用Jsoup来抓取整个网站,并将其保存到本地,包括CSS、JavaScript、图片以及各个页面。 首先,我们需要了解Jsoup的基本用法。Jsoup通过建立一个HTTP连接到目标网站,然后解析返回的...
在本篇详尽的讨论中,我们将深入探讨 jsoup 的核心概念,包括其基本用法、解析HTML文档、选择元素、提取数据以及修改HTML结构。同时,我们还会参考提供的帮助文档API,了解如何高效地利用这个库。 ### 1. 安装与...
在这篇内容中,我们将深入探讨Jetty 8的嵌入式使用方法以及如何结合Jsoup进行Web测试。 1. **Jetty 8嵌入式Web服务器** - **嵌入式概念**:与传统的独立运行的Web服务器不同,嵌入式Web服务器是直接在应用程序代码...
下面是一个简单的Android应用中使用JSoup解析HTML的示例: ```java public class MainActivity extends AppCompatActivity { private static final String URL = "http://example.com"; @Override protected ...
在本篇文章中,我们将深入探讨如何使用JSoup构建一个简单的Java HTML爬虫,并学习如何统计词频以及归纳搜索结果。 1. **JSoup简介** JSoup的核心功能在于它能够解析HTML,就像浏览器一样理解页面结构。它提供了...
本篇文章将深入探讨如何使用Jsoup进行简单的网页抓取,并将抓取的数据写入Excel的多个工作表。 首先,我们要了解Jsoup的基本用法。Jsoup的核心功能在于解析HTML文档,通过其提供的选择器语法,我们可以像操作DOM...
Jsoup是一个非常流行的选择,它提供了一种易于使用的API来解析HTML,同时支持CSS选择器,使得数据提取变得简单直观。而TagSoup则专注于处理不规范的HTML,它可以解析那些在实际网页中常见的乱七八糟的HTML标签和属性...
具体实现时,可以先定义一个URL类来管理链接,再创建一个下载类处理HTTP请求,接着使用Jsoup解析返回的HTML,最后将提取的数据存储到文件或数据库中。 "JAVA实现爬虫网站首页"这个知识点进一步扩展了网络爬虫的应用...
本篇文章将详细讲解如何使用Jsoup来实现自动重复抓取任意网站页面并进行归类。 **一、Jsoup简介** Jsoup是一个用于处理实际世界HTML的Java库。它提供了非常方便的API来提取和操作数据,其核心特性包括: 1. **...
接着,你可以编写一个Java类,使用Jsoup连接CSDN文章的URL,然后解析HTML内容。以下是一个简单的示例,展示了如何获取文章标题: ```java import org.jsoup.Jsoup; import org.jsoup.nodes.Document; public class...
2. **获取文章列表**:通过分析CSDN的文章列表页面,确定URL模式和页面结构,然后利用Jsoup解析HTML,提取文章标题、作者、链接等信息。 3. **抓取文章内容**:根据每篇文章的链接,发送新的GET请求获取文章详情页,...
2. **使用Jsoup库解析** Jsoup是一款强大的Java库,专为HTML解析而设计。它提供了简洁的API,使得解析HTML如同操作DOM树一样简单。在Android项目中,我们可以通过添加Jsoup依赖来使用它。例如,解析某个元素: ```...