- 浏览: 620702 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 21443为了看着界面舒服,我这里用到了bootstrap,还用到jqu ... -
【转】JVM垃圾回收机制
2012-12-11 22:04 804每个Java程序员迟早都会碰到下面这个错误: jav ... -
【转】Java防止SQL注入
2012-10-09 17:36 872SQL 注入简介: ... -
【转】JSTL 标签库详细介绍资料
2012-08-16 11:05 763前言从jsp 1.1规范开始,jsp就支持在jsp中使用 ... -
【转】使用 JAVA 中的动态代理实现数据库连接池
2012-08-13 17:13 841转载地址:http://www.ibm.com/develop ... -
jsp 理解301和302的区别
2012-05-21 17:35 2589301状态码: response.setStatus(30 ... -
jsp - 下载gzip压缩文件
2012-05-18 16:01 1250out.clearBuffer(); //获取文件地址 ... -
【转】Java 性能优化之 String 篇
2012-05-16 12:23 939转载地址:http://www.ibm.com/develop ... -
收藏Google Analytics api - java版地址
2012-03-13 10:38 1167收藏Google Analytics api java版地址: ... -
java文件上传和上传excel后并解析出来的小工具
2011-11-20 18:12 1406支持上传中文文件名及数据; 支持上传gif,jpg,png, ... -
【转】使用 jsoup 对 HTML 文档进行解析和操作
2011-11-10 15:52 562转载地址:http://www.ibm.com/develop ... -
【转】深入分析 Java I/O 的工作机制
2011-11-01 22:15 663转载地址:http://www.ibm.com/develop ... -
【转】实战 Lucene,第 1 部分: 初识 Lucene
2011-10-22 00:49 769转载地址:http://www.ibm.com/develop ... -
【转】几种任务调度的 Java 实现方法与比较
2011-09-11 19:14 1021简介: 综观目前的 Web ... -
【转】JVM内存回收理论与实现
2011-09-05 18:27 851在本篇中,我们将继续 ... -
解决ajax传到jsp乱码 解决方法之一
2011-09-05 12:00 831解决ajax传到jsp乱码 解决方法之一 ajax页面和js ... -
【转】Servlet 工作原理解析
2011-09-02 09:23 638转载地址:http://www.ibm.com/develop ... -
【转】理解Java ClassLoader机制
2011-07-28 09:27 768当JVM(Java虚拟机)启动 ... -
【转】程序员技术练级攻略
2011-07-19 18:24 712月光博客6月12日发表了《写给新手程序员的一封信 》,翻译自 ... -
关于 Java 中 finally 语句块的深度辨析
2011-07-15 09:33 734文章地址:http://www.ibm.com/develop ...
相关推荐
使用Jsoup解析html网页,包含jsoup.jar \ api.chm \ 代码
一个简单地android解析html的例子
使用httpClient采集数据,jsoup解析页面
Jsoup解析html+xml
这是使用Jsoup解析HTML得到数据的一个小例子,具体的使用方法请参见我的博客:http://blog.csdn.net/ProgramChangesWorld/article/details/47134255
用Jsoup解析html的所有jar包!
jsoup解析html网页的api
使用Jsoup库解析HTML、XML或URL链接中的DOM节点 Jsoup进行Html的Dom解析
使用android解析html文档,替换html中的内容
jsoup解析HTML,获取htmlUrl
使用jsoup解析数据的一个手机壁纸小软件
Jsoup库文件;Jsoup解析Java包
java解析xml,dom解析,jsoup解析,两种不同方式的解析,完整项目
支持Android4.0,真机与模拟器都测试通过,使用异步方式解析
java语言,jsoup解析html修改文件名的一个demo
使用jsoup解析hmtl,获取对应数据
jsoup获取网站资源,按照自己的思路写自己的APP。
利用jsoup工具解析html的demo
资源包含了一个利用jsoup解析html网页的代码简单易懂
这个只是一个java源文件,用于学习Jsoup