- 浏览: 182826 次
- 性别:
- 来自: 北京
最新评论
-
u011374223:
获取颜色的方法有两个,07xssfWORKBOOK的需要用这个 ...
apache poi读取excel中的颜色,真是坑爹啊 -
zhangtcb:
读取的颜色和Excel中的不一样啊
apache poi读取excel中的颜色,真是坑爹啊 -
LD_21:
...
log4j日志文件的相对路径 -
xfxlch:
upThx
来,让我们一起画个印章吧 -
xinxinlong:
单元格的style里面有个颜色,如果双击单元格,里面的文字选中 ...
apache poi读取excel中的颜色,真是坑爹啊
这两天打算把魔兽世界的官方漫画<王者归来>看看,体会下刀疤男的复仇历程.google后发现uuu9上有中文版,但是只能在线看,每次都要点击图片最大化看,很烦.于是想下载下来看.用firebug查看,发现页面写的还算规范.就是用jsoup解析图片地址,然后用url下载下来.很简单,也不想用多线程了.就这样直接一个一个来吧.毕竟我家里4M的网速不是盖的.
package pic; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.Map; import java.util.Set; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class Spider { /** * @param args */ public static void main(String[] args) { File dir = new File("F:/国王归来"); if (!dir.exists()) { dir.mkdirs(); } Spider spider = new Spider(); spider.catalog(dir, "http://wow.uuu9.com/2008/200812/187521.shtml"); spider.prey(dir); } /** * 分析目录 * * @param address */ private void catalog(File dir, String address) { try { URL url = new URL(address); Document doc = Jsoup.parse(url, 1000 * 3); Element body = doc.body(); Element textworld = body.getElementsByClass("textworld").first(); Element table = textworld.getElementsByTag("table").first(); Elements hrefs = table.getElementsByTag("a"); Map<File, String> map = new LinkedHashMap<File, String>(); File catalog = new File(dir, "catalog.txt"); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter( new FileOutputStream(catalog), "UTF-8")); for (Element a : hrefs) { if (a.children().size() == 0) { continue; } Element strong = a.child(0); if (strong != null && strong.tagName().equalsIgnoreCase("strong")) { String title = strong.text() .replaceAll("[\\.\\-\\::]", "_") .replaceAll("\\s", ""); File f = new File(dir, title); if (!f.exists()) { f.mkdirs(); } String href = a.attr("href"); bw.write(title + "(" + href + ")\r\n"); map.put(f, href); } } bw.close(); for (Map.Entry<File, String> entry : map.entrySet()) { File f = entry.getKey(); Set<String> set = new LinkedHashSet<String>(); this.section(set, entry.getValue()); OutputStreamWriter osw = new OutputStreamWriter( new FileOutputStream(new File(f, "catalog.txt")), "UTF-8"); int i = 1; for (String src : set) { osw.write(i++ + "(" + src + ")\r\n"); } osw.close(); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * 分析章节 * * @param address * 章节地址 */ private void section(Set<String> set, String address) { try { URL url = new URL(address); Document doc = Jsoup.parse(url, 1000 * 10); Element body = doc.body(); Element div = body.getElementsByClass("textworld").first(); Element img = div.getElementsByTag("img").first(); String src = img.attr("src"); System.out.println(src); set.add(src); Element none = div.getElementById("pagecount"); Element links = none.previousElementSibling(); Element font = links.getElementsByTag("font").first(); Element next = font.nextElementSibling(); if (next.text().matches("\\[\\d+\\]")) { this.section(set, next.absUrl("href")); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } /** * 下载图片 * * @param dir */ private void prey(File dir) { for (File f : dir.listFiles()) { if (!f.isDirectory()) { continue; } File catalog = new File(f, "catalog.txt"); if (!catalog.exists()) { continue; } try { BufferedReader reader = new BufferedReader( new InputStreamReader(new FileInputStream(catalog), "UTF-8")); String line = null; while ((line = reader.readLine()) != null) { String path = line.substring(line.indexOf("(") + 1, line .length() - 1); try { URL url = new URL(path); HttpURLConnection con = (HttpURLConnection) url .openConnection(); InputStream is = con.getInputStream(); OutputStream os = new FileOutputStream(new File(f, path .substring(path.lastIndexOf("/") + 1))); byte[] b = new byte[1024 * 4]; int l = -1; while ((l = is.read(b)) != -1) { os.write(b, 0, l); } os.flush(); os.close(); con.disconnect(); System.out.println(path + " download to " + dir.getCanonicalPath() + " complete."); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } reader.close(); if (catalog.renameTo(new File(f, "catalog"))) { catalog.delete(); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } }
评论
1 楼
lqixv
2010-09-21
你好。我现在也在使用 jsoup,在使用过程中有这样一个问题,如,我把这段html代码:
转换为一个 Document 对象,但接着用 Document 的 html 函数输出时,发现其代码增加了一些,如
我想知道,你知不知道,有什么办法可以让 jsoup 转换最上面的代码为一个 java 对象(如 Document),但不要添加一些额外的代码,以便于我分析呢?
<p> 文本1输入框:<input headalign="left" ifrequest="1" ifshowhead="1" name="text1" value="text1" /></p> <p> 人员输入框:<input headalign="left" inputtype="person" name="person1" value="person1" /></p> <p> 日期输入框:<input headalign="left" inputtype="date" name="date1" /></p>
转换为一个 Document 对象,但接着用 Document 的 html 函数输出时,发现其代码增加了一些,如
<html> <head></head> <body> <form> <p> 文本1输入框:<input headalign="left" ifrequest="1" ifshowhead="1" name="text1" value="text1" /></p> <p> 人员输入框:<input headalign="left" inputtype="person" name="person1" value="person1" /></p> <p> 日期输入框:<input headalign="left" inputtype="date" name="date1" /></p> </form> </body> </html>
我想知道,你知不知道,有什么办法可以让 jsoup 转换最上面的代码为一个 java 对象(如 Document),但不要添加一些额外的代码,以便于我分析呢?
发表评论
-
公约数,公倍数和素数的简单计算
2012-04-01 16:08 1331为自己留作备份,省得用到的时候再去寻找 简单的计算最大公约数 ... -
java简单打印
2012-03-08 09:56 1234没什么,就是一个简单的打印,留作存档 publi ... -
httpclient4的封装
2012-01-06 15:11 4636没什么特别的,自己封装着用的. package cpcns. ... -
h2的baseDir
2011-11-11 16:38 1464使用h2 1.3.161.在web项目中.计划在Listene ... -
eclipse下自动打包项目并部署到web项目的lib下
2011-10-18 15:59 5119修改web项目的.settings下的org.eclipse. ... -
获取汉字的五笔,全拼和双拼的工具类
2011-10-10 15:51 2393如题,项目需要,首先可用的自然是pinyin4j. 在不考虑 ... -
五笔86和汉字对照表
2011-10-09 16:53 2533项目要用到汉字转拼音和五笔,拼音容易,使用pinyin4j. ... -
java System属性
2011-09-19 10:14 1387自定义 : java -Dname=value S ... -
log4j日志文件的相对路径
2011-09-01 10:51 6813一直没能很好的解决log4j的日志文件的保存路径.今天恰好又遇 ... -
Apache codec中的base64
2011-07-20 09:46 2287一直使用sun的base64,但是感觉不是很好,毕竟不是标准包 ... -
来,让我们一起画个印章吧
2011-07-04 14:52 4530这几天发现有哥们在介 ... -
svg中的arc转化为java中的arc
2011-05-27 15:31 2682最近项目需要解析svg中的path.直线和贝塞尔曲线都好办,唯 ... -
swing的拖拽(dnd)的简单实现
2011-03-28 10:18 2008这几天项目需要用到dnd,API比较麻烦.在网上找了很多,都只 ... -
自用的MD5计算工具
2011-03-11 15:45 1783/** * 检查输入流的MD5值是否符合.如果MD5为 ... -
用jsoup分析下载巨鲸的mp3
2011-02-25 15:37 1727这两天突然想听听杰克逊的歌.首选当然是巨鲸. 支持正版. ... -
获取子类的泛型参数
2011-01-27 16:03 1358用的时候不好找,今天看nutz的dao的源码看到了,摘出来备份 ... -
简单的通过注解运行的dao
2011-01-26 11:47 1792项目是个老项目,是个比较简单,但是编码比较凌乱的项目.数据库字 ... -
java模拟js的escape和unescape函数
2011-01-05 10:43 3468这个是在网上找的代码,然后修改了下.作用标题已经很明显了. ... -
自己写的多线程对象池
2010-12-10 16:53 1322/** * 排版器的一个公用接口 <br> ... -
apache poi读取excel中的颜色,真是坑爹啊
2010-12-01 16:23 16973工作原因,需要使用poi来读取excel中的所有内容. 其他 ...
相关推荐
这篇博客“HttpClient Jsoup爬取天气预报”可能讲述了如何结合这两者来获取并解析网页上的天气预报信息。 首先,HttpClient允许开发者发送各种HTTP请求(如GET、POST等)到服务器,并接收响应。在爬虫应用中,通常...
用jsoup实现爬取一个完整的网站,包含网站里的所有链接内容,会另存为html到本地,js和css文件也会保存到本地,可以直接在本地打开查看一个完整的网站。 eclipse项目,可以直接导入修改。 提供一个链接和保存爬取后...
本项目是一个基于安卓的简单利用jsoup爬取学校内网数据的教务系统app,设计的部分有:个人信息、课程表、考试时间、考勤信息、成绩查询、奖惩情况、开设课程、晚归违规等部分。主要思路就是利用jsoup爬数据把数据转化...
在这个"Jsoup爬取中国天气的简单实例"中,我们将深入探讨如何利用Jsoup进行网页抓取,特别是针对中国天气网站。这个实例非常适合对网络爬虫感兴趣的初学者,因为它提供了直观且易于理解的代码示例。 首先,让我们...
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的...2. 使用DOM或CSS选择器来查找、取出数据; 3. 可操作HTML元素、属性、文本;
使用JSOUP爬取国家统计局的数据,包含省市区,镇、村级的数据可选。
在这个项目中,我们关注的是使用Java和Jsoup库来爬取1688网站的信息。这是一个非常实用的技术,它可以帮助我们自动化地获取网页上的数据,如商品名称、价格、评价等,为数据分析或构建电商平台的模拟系统提供基础。 ...
以下将详细介绍如何在SpringBoot应用中集成并使用Jsoup进行网站数据爬取。 首先,为了在SpringBoot项目中使用Jsoup,我们需要在`pom.xml`文件中添加对应的依赖。在给出的标签中,可以看到已经包含了Jsoup的依赖,...
**jsoup分页爬取网页** ...通过以上步骤,你可以使用jsoup有效地实现分页爬取网页。但需要注意,随着网页复杂性的增加,可能需要结合其他工具或库来处理JavaScript动态加载的内容,jsoup本身并不支持执行JavaScript。
总的来说,"jsoup爬取天气网各城市近七天天气情况存入数据库"这个项目,不仅涵盖了网络爬虫的基本技术,也涉及到了数据库管理和Java编程,对于提升编程技能和实战经验具有很大的帮助。通过实践,不仅可以巩固理论...
使用了一个简单的例子来测试在安卓中利用Jsoup,非常简单,解决很多小白的问题。 1.在lib中倒入jsoup-1.10.2.jar,在Android Studio中切换到Project目录下,将jsoup-1.10.2.jar放入lib,然后右键点击Add As Library...
"jsoup爬取某宝购物车数据返回json串,放入eclipse即可运行" 这个标题揭示了本次项目的核心技术是使用jsoup这个Java库来抓取淘宝网站上的购物车数据,并将获取到的数据转换为JSON格式。JSON(JavaScript Object ...
本教程将深入探讨如何使用Java和Jsoup库来爬取某房产网站上的房源信息。 首先,我们需要了解Jsoup的基本概念。Jsoup是一个用于处理实际世界HTML的Java库。它提供了非常方便的API,用于提取和操作数据,使用DOM,CSS...
本项目是一个基于安卓的简单利用jsoup爬取学校内网数据的教务系统app,设计的部分有:个人信息、课程表、考试时间、考勤信息、成绩查询、奖惩情况、开设课程、晚归违规等部分。主要思路就是利用jsoup爬数据把数据转化...
【Java爬虫项目】"Jsoup爬取中文医学图谱"是一个使用Java语言,结合Jsoup库进行网页数据抓取的实践案例,旨在提取中文医学图谱中的实体关系,为构建知识图谱模型提供数据支持。这个项目涉及到的主要知识点包括: 1....
通过jsoup抓取分页的文章信息,通过循环访问下一页的url来进行获取,详细描述见博文http://blog.csdn.net/bbs_baibisen/article/details/78789118
在这个项目中,我们使用了Jsoup库来实现对“斗图啦”网站的图片爬取与下载。 Jsoup是一个非常流行的Java库,专门用于处理和解析HTML文档。它的主要功能包括提取结构化数据、查找和修改DOM元素,以及模拟浏览器的...
为了使用Jsoup库进行网页爬取,首先需要在项目中添加Jsoup的依赖。Jsoup库的版本可以是1.10.3,这是当前文档中提到的版本。此外,由于Jsoup不自带HTTP请求功能,还需要使用httpclient库发送HTTP请求。因此,需要导入...