- 浏览: 135305 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
xinglianxlxl:
看看,不确定用了吗
url参数和map之间的转换 -
ijlkdwg:
没有看到 jar 包在哪 ?
java获取5日天气预报(json数据) -
BUYAOZAIBEIDAOLE:
查询一下就找到了,拿走试下,谢谢LZ
反射工具类 -
w1106093687:
引用试试什么效果
java bean反射 获取get set方法(Method) -
moxin0703:
哪有Utils包啊?
java获取5日天气预报(json数据)
我个人比较喜欢Google的logo,感觉设计的很好,以前都是看到喜欢的logo就下载下来(通过浏览器右键图片另存为),最近看了java的jsoup(html解析器)突发奇想能不能把Google的logo全拿下来,通过分析Google的页面发现并不复杂,所以就决定把它拿下来了,在Google logos页面发现都是英文的,就想到了再利用Google翻译api对logo说明进行翻译下,最终把图片信息以及翻译结果用json保存下来,
最终将这些logo放到了我的导航189站点上供喜欢Google logo的网友欣赏,哈哈。
地址:
http://www.dh189.com/p/logos/google/10_3.html
具体代码实现如下:
Crawler.java
GoogleLogoCrawler.java
下载下的文件如下:
最终保存的json数据:
在导航189上的显示(2010年)
最终将这些logo放到了我的导航189站点上供喜欢Google logo的网友欣赏,哈哈。
地址:
http://www.dh189.com/p/logos/google/10_3.html
具体代码实现如下:
Crawler.java
package com.googlelogo; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Map; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.HttpProtocolParams; import org.apache.http.util.EntityUtils; import com.google.api.translate.Language; import com.google.api.translate.Translate; /** * google logo 下载程序 * * http://www.dh189.com/ * @author ZZJ * */ public abstract class Crawler { /** * 使用google 翻译api * @param en * @return */ public String translateEnToCinese(String en) { Translate.setHttpReferrer("http://www.dh189.com"); try { return Translate.execute(en, Language.ENGLISH, Language.CHINESE); } catch (Exception e) { e.printStackTrace(); } return ""; } /** * 获取一个Map * * @return */ public Map<String, Object> getMap() { return new HashMap<String, Object>(0); } /** * 下载文件 * * @param url 文件http地址 * @param dir 目标文件 * @throws IOException */ public void downloadFile(String url, String dir) throws Exception { DefaultHttpClient httpclient = new DefaultHttpClient(); HttpProtocolParams.setUserAgent(httpclient.getParams(), "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9"); HttpGet httpget = new HttpGet(); httpget.setURI(new java.net.URI(url)); HttpResponse response = httpclient.execute(httpget); HttpEntity entity = response.getEntity(); InputStream input = null; try { input = entity.getContent(); File file = new File(dir); FileOutputStream output = FileUtils.openOutputStream(file); try { IOUtils.copy(input, output); } finally { IOUtils.closeQuietly(output); } } finally { IOUtils.closeQuietly(input); } } /** * 处理GET请求,返回整个页面 * * @param url 访问地址 * @param params 编码参数 * @return * @throws Exception * @throws Exception */ public synchronized String doGet(String url, String... params) throws Exception { DefaultHttpClient httpclient = new DefaultHttpClient(); HttpProtocolParams.setUserAgent(httpclient.getParams(), "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9"); String charset = "UTF-8"; if (null != params && params.length >= 1) { charset = params[0]; } HttpGet httpget = new HttpGet(); String content = ""; httpget.setURI(new java.net.URI(url)); HttpResponse response = httpclient.execute(httpget); HttpEntity entity = response.getEntity(); if (entity != null) { // 使用EntityUtils的toString方法,传递默认编码,在EntityUtils中的默认编码是ISO-8859-1 content = EntityUtils.toString(entity, charset); } httpget.abort(); httpclient.getConnectionManager().shutdown(); return content; } }
GoogleLogoCrawler.java
package com.googlelogo; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import org.apache.commons.io.FileUtils; import org.apache.commons.lang.StringUtils; import org.json.JSONArray; import org.json.JSONObject; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; /** * google logo 下载程序 * * http://www.dh189.com/ * @author ZZJ * */ public class GoogleLogoCrawler extends Crawler { private static final String URL = "http://www.google.com.hk/logos/logos%y-%n.html"; private static final String LOGO_URL = "http://www.google.com.hk"; private static final String[] YEARS = new String[] { "98", "99", "00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10" }; private static final String INDEX = "http://www.google.com.hk/logos/index.html"; private static final String DIR_PATH="D:\\googlelogos\\"; public void doStart() { JSONArray array = new JSONArray(); for (String year : YEARS) { for (int i = 1; i < 5; i++) { String url = URL.replaceAll("%y", year).replaceAll("%n", i + ""); String path = year + "_" + i; start(url, array, DIR_PATH + path + "\\", path); } } start(INDEX, array, DIR_PATH+"10_3\\", "10_3"); try { FileUtils.writeStringToFile(new File(DIR_PATH+"json"), array.toString(), "UTF-8"); } catch (IOException e) { e.printStackTrace(); } System.out.println(array); } public void start(String url, JSONArray array, String dir, String path) { try { String content = super.doGet(url); Document doc = Jsoup.parse(content); Elements dts = doc.select(".doodles dt"); Elements dds = doc.select(".doodles dd"); List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(0); for (int i = 0; i < dts.size(); i++) { Element dt = dts.get(i); Element dd = dds.get(i); Map<String, Object> map = super.getMap(); list.add(map); map.put("date", dt.text()); map.put("url", LOGO_URL + dd.select("img").first().attr("src")); map.put("title", dd.text()); } JSONArray array2 = new JSONArray(); for (Map<String, Object> map : list) { JSONObject json = new JSONObject(); String proxy = StringUtils.substringAfterLast(map.get("url").toString(), "."); long date = new Date().getTime(); String name = date + "." + proxy; json.put("url", map.get("url").toString()); json.put("dir", name); json.put("title_en", map.get("title")); json.put("date", map.get("date")); //翻译 String dateZh = super.translateEnToCinese(map.get("date").toString()); String titleZh = super.translateEnToCinese(map.get("title").toString()); json.put("title_zh_cn", dateZh + " - " + titleZh); //下载图片 super.downloadFile(map.get("url").toString(), dir + name); array2.put(json); } array.put(new JSONObject().put(path, array2)); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) throws Exception { new GoogleLogoCrawler().doStart(); } }
下载下的文件如下:
最终保存的json数据:
在导航189上的显示(2010年)
发表评论
-
Tomcat 启动不了问题
2010-09-07 16:54 889把jre里的msvcr71.dll文件拷贝到C:\window ... -
Properties类小结
2010-09-06 16:20 865目前有个任务,要用到java.util.Properties类 ... -
lucene 创建索引
2010-09-01 14:48 1058@Retention(RetentionPolicy.RU ... -
反射工具类
2010-09-01 11:22 1477import java.lang.reflect.Fie ... -
url参数和map之间的转换
2010-09-01 11:10 9226/** * 将url参数转换成map * @ ... -
使用jackson解析json数据时获取多级节点的值,递归实现
2010-09-01 11:08 5896/** * 解析jsonNode的值 * @ ... -
将javabean转换成Map
2010-09-01 11:06 1797public static Map<String, ... -
httpclient4 ThreadSafeClientConnManager 多线程程执行HTTP请求的例子
2010-08-27 13:49 7271package cn.lake.util; import ... -
CalendarUtil
2010-08-19 15:35 979package com.test; import ... -
java 中对象属性和数据库中字段名的转换
2010-08-18 18:18 5461在开发过程中数据中的字段的命名一般是这样的:user_name ... -
GoogleLogoUtil
2010-08-13 13:05 790package com.test; import ... -
HttpClient4 实现文件下载
2010-08-12 18:19 3067HttpClient4 实现文件下载,依赖commons-io ... -
java httpClient4.0 通过代理认证访问网站
2010-08-11 10:09 2932httpClient4.0 通过代理认证访问网站 imp ... -
httpclient 获取到网页内容自动判断内容编码
2010-08-08 16:25 6517在“导航189”网站中编 ... -
java 生成32位UUID
2010-07-27 18:53 2568java 生成32位UUID,需要apache的2个jar(c ... -
java bean反射 获取get set方法(Method)
2010-07-27 18:44 9437/** * java反射bean的get方法 ... -
java 半角与全角转换
2010-07-27 18:41 936/** * 半角转全角 * ... -
使用jackson解析json数据
2010-07-27 14:15 3091import java.util.Iterator; ... -
java高清新处理图片
2010-07-13 09:51 2513在项目中需要对图片处理(缩小、加水印),一开始用的程序虽然可以 ... -
java人民币小写转换大写
2010-07-13 09:47 1645/** * <p>Title: Money& ...
相关推荐
Google的logo,感觉设计的很好,最近看了java的jsoup(html 解析器)把Google的logo全部下载下来,另外,在Google logos页面发现都是英文的,通过利用Google翻译api对logo说明进行翻译,最终把图片信息以及翻译结果...
4. **结合HttpClient和Jsoup抓取网页数据**: - 使用HttpClient发送HTTP请求,获取网页的HTML内容。 - 将HttpClient获取的HTML内容传递给Jsoup的parse方法,得到Document对象。 - 利用Jsoup的CSS选择器和数据提取...
本篇文章以"一篇文章精通系列-案例开发-巨细"为主题,详细介绍了如何使用HttpClient5、jsoup、WebMagic以及spider-flow这四个关键工具来构建一个强大的Java爬虫系统。以下是对这些工具和技术的深入解析。 首先,...
httpClient4.5.3+Jsoup1.10.2 commons-codec-1.9.jar commons-logging-1.2.jar httpclient-4.5.3.jar httpcore-4.4.6.jar jsoup-1.10.2.jar
HttpClient和Jsoup是Java开发中常用的两个库,用于网络数据采集和HTML解析。HttpClient提供了强大的HTTP客户端服务,而Jsoup则是一个优秀的库,用于处理和理解HTML文档结构。本篇文章将深入探讨这两个库的使用方法...
HttpClient和Jsoup是Java开发中常用的两个库,用于处理HTTP请求和解析HTML文档。HttpClient是一个由Apache基金会开发的开源库,提供了丰富的API用于发送HTTP请求并处理响应,而Jsoup则是一个强大的HTML解析器,可以...
基于SSM+maven+httpClient+jsoup实现小说网站项目 基于SSM+maven+httpClient+jsoup实现小说网站项目 基于SSM+maven+httpClient+jsoup实现小说网站项目 基于SSM+maven+httpClient+jsoup实现小说网站项目 基于SSM+...
1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,...
本文将详细探讨使用Java中的两种库——HttpClient和Jsoup,以及它们结合使用来构建网页爬虫的方法。 HttpClient是Apache软件基金会的一个项目,提供了对HTTP协议的全面支持,包括请求/响应模型、连接管理、重定向...
标题中的“jsoup httpclient 爬取网页并下载google图标”揭示了这个项目或教程是关于使用Java的两个著名库——Jsoup和HttpClient,来实现网页抓取并下载特定资源,这里是Google的图标。Jsoup是一个用于处理实际世界...
**JSoup库** ...通过JSoup和HTTPClient的结合使用,开发者可以轻松构建功能丰富的网页爬虫,满足数据抓取和分析的需求。在实际应用中,需要注意遵守网络规范,尊重网站规则,以及有效地管理和优化爬虫性能。
包含httpclient-4.5.3.jar,以及其依赖包commons-codec-1.9.jar,commons-logging-1.2.jar,httpcore-4.4.6.jar。包含jsoup-1.10.2.jar
获取到响应后,我们使用Jsoup的`parse`方法解析HTTP响应的实体内容,得到一个Document对象,然后可以利用Jsoup提供的API来提取网页的元素和数据。 WebSiteDomainUniqueGetDetails.java可能是另一个示例,它可能展示...
在"httpclien+jsoup"压缩包中,应包含HttpClient和Jsoup的JAR文件,这些文件需要添加到项目的类路径中以便编译和运行上述示例代码。在使用这些库时,确保它们的版本兼容,避免出现潜在的运行时问题。 总的来说,...
Jsoup+httpclient模拟登陆和抓取页面.pdf
Jsoup+httpclient 模拟...通过上述知识点,可以了解到使用Jsoup和HttpClient进行网页登录和内容抓取的完整流程和关键技术点。在实际开发中,这些知识点可以帮助开发者高效地处理HTML页面数据,实现对网页的自动化操作。
HttpClient是Apache基金会开发的一款强大的HTTP...总的来说,HttpClient和Jsoup的结合使用,为Java开发者提供了一个强大且灵活的工具,可以方便地获取和解析网页数据,对于进行数据抓取和分析的项目来说非常实用。
Java爬虫技术是软件开发中...通过学习和熟练使用Jsoup和HttpClient,你可以构建出能够处理各种网页结构,高效、稳定地抓取网络数据的爬虫程序。如果你对此感兴趣,记得点赞支持,这些资源将对你和你的同行们大有裨益。