- 浏览: 1539868 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (525)
- SEO (16)
- JAVA-EE-Hibernate (6)
- JAVA-EE-Struts (29)
- JAVA-EE-Spring (15)
- Linux (37)
- JAVA-SE (29)
- NetWork (1)
- CMS (14)
- Semantic Research (3)
- RIA-Flex (0)
- Ajax-Extjs (4)
- Ajax-Jquery (1)
- www.godaddy.com (0)
- SSH (34)
- JavaScript (6)
- SoftwareEngineer (9)
- CMMI (0)
- IDE-Myeclipse (3)
- PHP (1)
- Algorithm (3)
- C/C++ (18)
- Concept&Items (2)
- Useful WebSite (1)
- ApacheServer (2)
- CodeReading (1)
- Socket (2)
- UML (10)
- PowerDesigner (1)
- Repository (19)
- MySQL (3)
- SqlServer (0)
- Society (1)
- Tomcat (7)
- WebService (5)
- JBoss (1)
- FCKeditor (1)
- PS/DW/CD/FW (0)
- DesignPattern (11)
- WebSite_Security (1)
- WordPress (5)
- WebConstruction (3)
- XML|XSD (7)
- Android (0)
- Project-In-Action (9)
- DatabaseDesign (3)
- taglib (7)
- DIV+CSS (10)
- Silverlight (52)
- JSON (7)
- VC++ (8)
- C# (8)
- LINQ (1)
- WCF&SOA (5)
- .NET (20)
- SOA (1)
- Mashup (2)
- RegEx (6)
- Psychology (5)
- Stock (1)
- Google (2)
- Interview (4)
- HTML5 (1)
- Marketing (4)
- Vaadin (2)
- Agile (2)
- Apache-common (6)
- ANTLR (0)
- REST (1)
- HtmlAnalysis (18)
- csv-export (3)
- Nucth (3)
- Xpath (1)
- Velocity (6)
- ASP.NET (9)
- Product (2)
- CSS (1)
最新评论
-
lt26w:
理解成门面模式应该比较容易明白吧
FacadePattern-Java代码实例讲解 -
lt26w:
看下面的例子比较明白.
FacadePattern-Java代码实例讲解 -
javaloverkehui:
这也叫文档,别逗我行吗,也就自己看看。
HtmlCleaner API -
SE_XiaoFeng:
至少也应该写个注释吧。
HtmlCleaner API -
jfzshandong:
...
org.springframework.web.filter.CharacterEncodingFilter 配置
利 用xml,解析yahoo天气代码~~~
<script type="text/javascript">
document.body.oncopy = function() {
if (window.clipboardData) {
setTimeout(function() {
var text = clipboardData.getData("text");
if (text && text.length > 300) {
text = text + "\r\n\n本文来自CSDN博客,转载请标明出处:" + location.href;
clipboardData.setData("text", text);
}
}, 100);
}
}
</script><script type="text/javascript"> function StorePage() { d = document; t = d.selection ? (d.selection.type != 'None' ? d.selection.createRange().text : '') : (d.getSelection ? d.getSelection() : ''); void (keyit = window.open('http://www.365key.com/storeit.aspx?t=' + escape(d.title) + '&u=' + escape(d.location.href) + '&c=' + escape(t), 'keyit', 'scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes')); keyit.focus(); }</script>
我很菜,曾为这个天气代码搞了好几天,不过现在我终于可以实现了
网站首页上每天都能够有最新的天气情况,而不用自己手动搜集,确实方便了很多,下面我就将我的经验介绍一下
关于天气服务,我是用的yahoo提供的天气服务,网上搜索的时候,据说weather.com也提供这个服务,不过需要注册,我去看看了,甚至连注册的地方都没找到(汉自己的e文阿),就懒得用他们家的了
yahoo的天气服务地址是
http://xml.weather.yahoo.com/
在yahoo的技术支持里对于天气的代码有详细的解释
http://developer.yahoo.com/weather/
简单说来,我们可以发送请求到yahoo,它就会返回一个xml文件,请求的地址如下:
http://xml.weather.yahoo.com/forecastrss?p=CHXX0008&u=c
我们得到的xml文件格式如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<rss version="2.0" xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
<channel>
<title>Yahoo! Weather - Beijing, CH</title>
<link>http://us.rd.yahoo.com/dailynews/rss/weather/Beijing__CH/*http://xml.weather.yahoo.com/forecast/CHXX0008_c.html</link>
<description>Yahoo! Weather for Beijing, CH</description>
<language>en-us</language>
<lastBuildDate>Tue, 26 Dec 2006 12:00 pm CST</lastBuildDate>
<ttl>60</ttl>
<yweather:location city="Beijing" region="" country="CH" />
<yweather:units temperature="C" distance="km" pressure="mb" speed="kph" />
<yweather:wind chill="-7" direction="300" speed="32" />
<yweather:atmosphere humidity="27" visibility="999" pressure="0" rising="2" />
<yweather:astronomy sunrise="7:35 am" sunset="4:56 pm" />
<image>
<title>Yahoo! Weather</title>
<width>142</width>
<height>18</height>
<link>http://weather.yahoo.com/</link>
<url>http://us.i1.yimg.com/us.yimg.com/i/us/nws/th/main_142b.gif</url>
</image>
<item>
<title>Conditions for Beijing, CH at 12:00 pm CST</title>
<geo:lat>39.93</geo:lat>
<geo:long>116.28</geo:long>
<link>http://us.rd.yahoo.com/dailynews/rss/weather/Beijing__CH/*http://xml.weather.yahoo.com/forecast/CHXX0008_c.html</link>
<pubDate>Tue, 26 Dec 2006 12:00 pm CST</pubDate>
<yweather:condition text="Fair" code="34" temp="0" date="Tue, 26 Dec 2006 12:00 pm CST" />
<description><![CDATA[
<img src="http://us.i1.yimg.com/us.yimg.com/i/us/we/52/34.gif" /><br />
<b>Current Conditions:</b><br />
Fair, 0 C<BR /><BR />
<b>Forecast:</b><BR />
Tue - Sunny. High: 1 Low: -8<br />
Wed - Sunny. High: 1 Low: -9<br />
<br />
<a href="http://us.rd.yahoo.com/dailynews/rss/weather/Beijing__CH/*http://xml.weather.yahoo.com/forecast/CHXX0008_c.html">Full Forecast at Yahoo! Weather</a><BR/>
(provided by The Weather Channel)<br/>
]]></description>
<yweather:forecast day="Tue" date="26 Dec 2006" low="-8" high="1" text="Sunny" code="32" />
<yweather:forecast day="Wed" date="27 Dec 2006" low="-9" high="1" text="Sunny" code="32" />
<guid isPermaLink="false">CHXX0008_2006_12_26_12_0_CST</guid>
</item>
</channel>
</rss>
<!-- p6.weather.scd.yahoo.com uncompressed Tue Dec 26 21:04:50 PST 2006 -->
看到了吧,里面有我们需要的数据,这时我们只要通过xml操作读取到里面的数据就可以了。
xml的操作我所知道有dom,sax api和jdom三种方式,随便哪一种你都可以,我用了sax这种方式
Weather weather=new Weather();
Vector vector=new Vector();
YahooHandler yh=new YahooHandler();
URL url=new URL("http://localhost:8080/daemon/weather.xml");
InputStream input=url.openStream();
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setNamespaceAware(false);
SAXParser parser = factory.newSAXParser();
parser.parse(input, yh);
vector=yh.getVector();
weather=(Weather)vector.elementAt(0);
在这里我有一个weather.class封装了一些weather的属性,一个yahoohandler用来解析数据
主要就是这么一些语句:
public void startElement(String name,AttributeList attributes) throws SAXException{
String temp_date;
if(name.equalsIgnoreCase("item")){
weather=new Weather();
}else if(name.equalsIgnoreCase("yweather:condition")){
temp_date=attributes.getValue("date");
System.out.println("pubDate is :"+temp_date);
//weather.setPubDate();
}else if(name.equalsIgnoreCase("description")){
//System.out.println("When ther is description the temp_date is :"+temp_date);
}else if(name.equalsIgnoreCase("yweather:forecast")){
temp_date=attributes.getValue("date");
String day=attributes.getValue("day");
int low=Integer.parseInt(attributes.getValue("low"));
int high=Integer.parseInt(attributes.getValue("high"));
String text=attributes.getValue("text");
//将字符串日期转换为日期格式
if(temp_sign==0){
weather.setTodayDay(day);
weather.setTodayLow(low);
weather.setTodayHigh(high);
weather.setTodayText(text);
//System.out.println("Date is :"+temp_date+" day is :"+day+" low :"+low+" high :"+high+" text:"+text);
temp_sign=1;
}else if(temp_sign==1){
weather.setTomDay(day);
weather.setTomLow(low);
weather.setTomHigh(high);
weather.setTomText(text);
//System.out.println("Date is :"+temp_date+" day is :"+day+" low :"+low+" high :"+high+" text:"+text);
temp_sign=0;
}
}
其实只要自己认真分析分析,这个天气预报的抓取一点都不难~~~~
网站首页上每天都能够有最新的天气情况,而不用自己手动搜集,确实方便了很多,下面我就将我的经验介绍一下
关于天气服务,我是用的yahoo提供的天气服务,网上搜索的时候,据说weather.com也提供这个服务,不过需要注册,我去看看了,甚至连注册的地方都没找到(汉自己的e文阿),就懒得用他们家的了
yahoo的天气服务地址是
http://xml.weather.yahoo.com/
在yahoo的技术支持里对于天气的代码有详细的解释
http://developer.yahoo.com/weather/
简单说来,我们可以发送请求到yahoo,它就会返回一个xml文件,请求的地址如下:
http://xml.weather.yahoo.com/forecastrss?p=CHXX0008&u=c
我们得到的xml文件格式如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<rss version="2.0" xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
<channel>
<title>Yahoo! Weather - Beijing, CH</title>
<link>http://us.rd.yahoo.com/dailynews/rss/weather/Beijing__CH/*http://xml.weather.yahoo.com/forecast/CHXX0008_c.html</link>
<description>Yahoo! Weather for Beijing, CH</description>
<language>en-us</language>
<lastBuildDate>Tue, 26 Dec 2006 12:00 pm CST</lastBuildDate>
<ttl>60</ttl>
<yweather:location city="Beijing" region="" country="CH" />
<yweather:units temperature="C" distance="km" pressure="mb" speed="kph" />
<yweather:wind chill="-7" direction="300" speed="32" />
<yweather:atmosphere humidity="27" visibility="999" pressure="0" rising="2" />
<yweather:astronomy sunrise="7:35 am" sunset="4:56 pm" />
<image>
<title>Yahoo! Weather</title>
<width>142</width>
<height>18</height>
<link>http://weather.yahoo.com/</link>
<url>http://us.i1.yimg.com/us.yimg.com/i/us/nws/th/main_142b.gif</url>
</image>
<item>
<title>Conditions for Beijing, CH at 12:00 pm CST</title>
<geo:lat>39.93</geo:lat>
<geo:long>116.28</geo:long>
<link>http://us.rd.yahoo.com/dailynews/rss/weather/Beijing__CH/*http://xml.weather.yahoo.com/forecast/CHXX0008_c.html</link>
<pubDate>Tue, 26 Dec 2006 12:00 pm CST</pubDate>
<yweather:condition text="Fair" code="34" temp="0" date="Tue, 26 Dec 2006 12:00 pm CST" />
<description><![CDATA[
<img src="http://us.i1.yimg.com/us.yimg.com/i/us/we/52/34.gif" /><br />
<b>Current Conditions:</b><br />
Fair, 0 C<BR /><BR />
<b>Forecast:</b><BR />
Tue - Sunny. High: 1 Low: -8<br />
Wed - Sunny. High: 1 Low: -9<br />
<br />
<a href="http://us.rd.yahoo.com/dailynews/rss/weather/Beijing__CH/*http://xml.weather.yahoo.com/forecast/CHXX0008_c.html">Full Forecast at Yahoo! Weather</a><BR/>
(provided by The Weather Channel)<br/>
]]></description>
<yweather:forecast day="Tue" date="26 Dec 2006" low="-8" high="1" text="Sunny" code="32" />
<yweather:forecast day="Wed" date="27 Dec 2006" low="-9" high="1" text="Sunny" code="32" />
<guid isPermaLink="false">CHXX0008_2006_12_26_12_0_CST</guid>
</item>
</channel>
</rss>
<!-- p6.weather.scd.yahoo.com uncompressed Tue Dec 26 21:04:50 PST 2006 -->
看到了吧,里面有我们需要的数据,这时我们只要通过xml操作读取到里面的数据就可以了。
xml的操作我所知道有dom,sax api和jdom三种方式,随便哪一种你都可以,我用了sax这种方式
Weather weather=new Weather();
Vector vector=new Vector();
YahooHandler yh=new YahooHandler();
URL url=new URL("http://localhost:8080/daemon/weather.xml");
InputStream input=url.openStream();
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setNamespaceAware(false);
SAXParser parser = factory.newSAXParser();
parser.parse(input, yh);
vector=yh.getVector();
weather=(Weather)vector.elementAt(0);
在这里我有一个weather.class封装了一些weather的属性,一个yahoohandler用来解析数据
主要就是这么一些语句:
public void startElement(String name,AttributeList attributes) throws SAXException{
String temp_date;
if(name.equalsIgnoreCase("item")){
weather=new Weather();
}else if(name.equalsIgnoreCase("yweather:condition")){
temp_date=attributes.getValue("date");
System.out.println("pubDate is :"+temp_date);
//weather.setPubDate();
}else if(name.equalsIgnoreCase("description")){
//System.out.println("When ther is description the temp_date is :"+temp_date);
}else if(name.equalsIgnoreCase("yweather:forecast")){
temp_date=attributes.getValue("date");
String day=attributes.getValue("day");
int low=Integer.parseInt(attributes.getValue("low"));
int high=Integer.parseInt(attributes.getValue("high"));
String text=attributes.getValue("text");
//将字符串日期转换为日期格式
if(temp_sign==0){
weather.setTodayDay(day);
weather.setTodayLow(low);
weather.setTodayHigh(high);
weather.setTodayText(text);
//System.out.println("Date is :"+temp_date+" day is :"+day+" low :"+low+" high :"+high+" text:"+text);
temp_sign=1;
}else if(temp_sign==1){
weather.setTomDay(day);
weather.setTomLow(low);
weather.setTomHigh(high);
weather.setTomText(text);
//System.out.println("Date is :"+temp_date+" day is :"+day+" low :"+low+" high :"+high+" text:"+text);
temp_sign=0;
}
}
其实只要自己认真分析分析,这个天气预报的抓取一点都不难~~~~
发表评论
-
关于java.util.concurrent必须知道的5件事(一)
2010-08-10 18:34 1444本文原作者:Ted Neward ... -
Java盲点:双重检查锁定及单例模式
2010-06-17 11:11 3670Peter Haggar , 高级软件工程师, IBM 20 ... -
有关可读性
2010-05-13 15:31 1289Long operatorId = ( Long.val ... -
zzJAVA中用于处理字符串的“三兄弟”
2010-04-18 15:42 1128JAVA 中用于处理 字符 ... -
Java中可以使用 break/continue label 语句来控制多重嵌套循环的跳转
2010-04-16 16:40 3651在Java中可以使用 break/conti ... -
JAVA网络编程Socket常见问题 【长连接专题】
2010-03-18 16:30 11130一. 网络程序运行过程中的常见异常及处理 ... -
利用 Eclipse Visual Editor 项目构建 GUI
2010-02-05 13:51 1429一个用于构建图形接口的图形化工具 ... -
学JAVA必须知道:抽象类与接口的区别
2010-01-26 22:08 846abstract class和interface是Java语言 ... -
scanner
2009-12-30 02:32 1198import java.util.Scanner; publ ... -
java从键盘输入一些字符串,并将字符串保存到一个文件中
2009-12-30 02:23 5201import java.io.*; public class ... -
文件的操作。。。行数据封装
2009-12-30 00:43 1163140100171101 太原市公安局特警支队行政处 ... -
java获取当前目录:java中获取当前类所在的目录
2009-12-30 00:19 19067在学习工作中遇到路 ... -
JAVA中MAP的用法
2009-12-29 23:54 11499Map简介 将键映射到值的对象。一个映射不能包含 ... -
演示java中Map容器的常用功能:
2009-12-29 23:53 1889mport java.util.*; ... -
Map的用途
2009-12-29 23:52 1067Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存 ... -
学生信息管理系统V0.2(使用文件存储数据)【MVC模式、DAO模式、Factory模式】
2009-12-07 10:02 21500.2版更新内容: 1.使用文件存储数据; 2.使用Has ... -
接口VS抽象类
2009-12-06 21:19 1187<!-- <rdf:RDF xmlns: ... -
应用java与flex轻松构建cs程序
2009-12-06 13:59 2625今天发现SmartInvoke这一好东西,拿过来与大家分享分享 ... -
JAVA中的equals()和hashCode()方法
2009-12-03 14:03 1087在 Java 语言中, equa ... -
获得系统时间 转换成字符串
2009-11-28 14:27 2882关键字: java 有时候经常用到JAVA 时间转换 如 ...
相关推荐
在Java编程领域,获取Yahoo天气预报的代码是一个实用的示例,它涉及到网络请求、XML解析和API调用等技术。Yahoo提供了公开的天气API,允许开发者通过HTTP请求获取特定地区的天气信息。以下是对这个主题的详细解释: ...
Yahoo天气预报Java API是开发人员可以利用的工具,它允许应用程序与Yahoo的天气服务进行交互,获取并展示全球各地的天气信息。这个API基于HTTP协议,使用RESTful设计原则,使得开发者可以方便地通过发送HTTP请求来...
【JSP实现XML解析】是Web开发中常见的一项任务,主要涉及到XML文档的处理和解析。XML(eXtensible Markup Language)是一种可扩展标记语言,常用于数据交换和存储结构化信息。JSP(JavaServer Pages)是Java平台上的...
综合来看,这份技术文档不仅向开发者展示了如何利用雅虎天气预报接口开发天气预报程序的全过程,还介绍了相关的技术知识,例如网络通信、XML解析和Java GUI开发等,是Java开发者进行类似项目时的重要参考文档。
本节将详细介绍如何使用Java SE中自带的JAXP(Java API for XML Processing)库来获取和解析Yahoo天气预报XML数据。 ##### 3.1 获取XML文档 使用Java的`HttpURLConnection`类来发送HTTP请求,并获取响应的XML文档...
4. **JSON解析**:雅虎天气API返回的数据通常是JSON格式,因此需要使用Gson、Jackson或org.json等库进行解析,将数据转化为Java对象。 5. **地理定位与城市搜索**:为了允许用户搜索城市,开发者可能需要集成地理...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
【标题】"高仿雅虎天气应用.zip" 暗示了这个压缩包包含的是一款模仿雅虎天气应用的项目源代码。雅虎天气应用是一款知名的手机应用,提供实时天气信息、预报、以及与当地环境相关的图片。"高仿"意味着这个应用在设计...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
这个压缩包文件“Android应用源码安卓高仿雅虎天气项目源码.rar”是一个包含有Android应用程序源代码的资源,其目标是模仿雅虎天气应用的界面和功能。通过分析和学习这个源码,我们可以深入理解Android应用开发的多...
3. **数据解析**:了解JSON或XML解析的基本概念,学习使用相应的解析库。 4. **界面展示**:设计和实现用户界面,将解析后的天气信息呈现给用户。 5. **性能优化**:考虑如何减少网络负载,优化内存使用,提升用户...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...