用什么软件可以看到海上北京未来七天天气预报的天气

历史上的今天
全国天气地图
未来3天天气
明天 09月22日
30℃~19℃
后天09月23日
31℃~22℃
大后天09月24日
33℃~23℃
我的工具箱
天气与生活
导语:秋季由于气候干燥,空气中缺乏水分的滋润,人们常会口鼻干...
天气与旅游
天气网旅游频道
国庆将至,广大上班族即将迎来盼望已久的假期...
天气与交通
城市天气新闻
导语:类星体是类似恒星天体的简称,其又可称为似星体,它是迄今...
导语:据报道,科学家过去普遍认为火星这个红色星球的&ldqu...
热门地区天气
空气质量最差城市最佳城市
1165中度污染2161中度污染3143轻度污染4141轻度污染5136轻度污染6132轻度污染7131轻度污染8129轻度污染9125轻度污染10125轻度污染
排行最高气温24小时降水昼夜温差
1新疆30.1℃2海南28.9℃3海南28.1℃4新疆27.7℃5广西27.6℃6广东27.5℃7广东27.4℃
根据今日00时至时整点实况资料统计
气象服务产品
关注天气网微信:tianqi555,输入城市名即可显示城市天气!
免费调用天气代码,放在网站上,自动显示城市天气预报。使用java获取未来7天天气信息,可用于android
环境:eclipsse, jdk1.6, 没有使用第三方的包,都是JDK有的。项目结构如下:1.获取天气预报的类WeatherUtil.java[java]package com.siqi. import java.io.F import java.util.ArrayL im...
环境:eclipsse, jdk1.6, 没有使用第三方的包,都是JDK有的。
项目结构如下:
1.获取天气预报的类
WeatherUtil.java
package com.siqi.
import java.io.F
import java.util.ArrayL
import java.util.C
import java.util.H
import java.util.L
import java.util.regex.M
import java.util.regex.P
import javax.xml.parsers.DocumentBuilderF
import javax.xml.transform.OutputK
import javax.xml.transform.T
import javax.xml.transform.TransformerF
import javax.xml.transform.dom.DOMS
import javax.xml.transform.stream.StreamR
import org.w3c.dom.D
import org.w3c.dom.E
import org.w3c.dom.NodeL
* 中国气象频道手机版("")获取天气信息, 因为手机版网页内容小,访问速度快。
* @author siqi
public class WeatherUtil {
* 省份页面(省)
public static final String PROVINCE_URL = "/common/province.";
* 城市页面(市)&br/&
* pid=%s中%s表示城市编号 例:/common/dis.do?pid=010101
public static final String DISTRICT_URL = "/common/dis.do?pid=%s";
* 县区页面(区)&br/&
* did=%s中%s表示县区编号&br/&
* pid=%s中%s表示城市编号&br/&
* 例:/common/cout.do?did=&pid=010101
public static final String COUNTY_URL = "/common/cout.do?did=%s&pid=%s";
* 7天天气预报页面&br/&
* cid=%s中%s表示区编号&br/&
* 例:/common/7d.do?cid=
public static final String REPORT7_URL = "/common/7d.do?cid=%s";
* 生活指数页面&br/&
* cid=%s中%s表示区编号
public static final String REPORT_MORE_URL = "/common/zslb.do?cid=%s";
* 保存城市编码信息的xml文档&br/&
* 保存了具体的区县和区县所对应的编码,例如&br/&
* &county&&br/&
* &name&北京&/name&&br/&
* &code&&/code&&br/&
* &/county&
public static final String XML_FILE = "./weathercn.xml";
private List&WeatherReport& weatherReportList = new ArrayList&WeatherReport&();
* 启动的时候,首先检查weathercn.xml是否存在,如果不存在的话,重新从获取,
* 只有第一次的时候会获取。
prepareXML();
} catch (Exception e) {
e.printStackTrace();
* 返回指定城市,指定日期的天气预报。&br/&
* @param city
城市,如"北京"。
* @param cal
* @return 如果城市正确,并且日期在7天以内,那么返回天气信息。否则返回null。
public WeatherReport getWeatherReport(String city, Calendar cal) {
String dateStr = cal.get(Calendar.MONTH) + "月"
+ cal.get(Calendar.DAY_OF_MONTH) + "日";
return getWeatherReport(city, dateStr);
* 返回指定城市,指定日期的天气预报。&br/&
* @param city
城市,如"北京"。
* @param date
日期,格式为"1月20日"。
* @return 如果城市正确,并且日期在7天以内,那么返回天气信息。否则返回null。
public WeatherReport getWeatherReport(String city, String date) {
for (WeatherReport report : getWeatherReports(city)) {
if (report.getDate().equals(date)) {
* 返回指定城市的天气预报(7天内)
* @param city
* @return 返回指定城市的天气预报(7天内),如果指定的城市错误,返回空的list,list.size()=0
public List&WeatherReport& getWeatherReports(String city) {
List&WeatherReport& list = new ArrayList&WeatherReport&();
String weatherPage = getWeatherReportPage(city);
List&String& reportStrList = getAllMathers(weatherPage,
"(?&=class=\"b\"&)[\\s\\S]+?&br&[\\s\\S]+?(?=&/)");
for (String reportStr : reportStrList) {
String weather = reportStr.trim().replaceAll(" ", "")
.replaceAll("&br&\r\n\r\n", "\r\n")
.replaceAll("&br&", "");
String[] str = weather.split("\r\n");
if (str.length & 5) {
WeatherReport report = new WeatherReport();
int i = 0;
String dateStr = str[i++].trim();
report.setCity(city);
report.setDate(getMatcher(dateStr, ".+(?=\\()"));
report.setWeekDay(getMatcher(dateStr, "(?&=\\().+?(?=\\))"));
report.setDayOrNight(str[i++].trim());
report.setWeather(str[i++].trim());
report.setTemperature(str[i++].trim());
report.setWindDir(str[i++].trim());
report.setWind(str[i++].trim());
list.add(report);
if (str.length & 10) {
report = new WeatherReport();
report.setCity(city);
report.setDate(getMatcher(dateStr, ".+(?=\\()"));
report.setWeekDay(getMatcher(dateStr,
"(?&=\\().+?(?=\\))"));
report.setDayOrNight(str[i++].trim());
report.setWeather(str[i++].trim());
report.setTemperature(str[i++].trim());
report.setWindDir(str[i++].trim());
report.setWind(str[i++].trim());
list.add(report);
} catch (Exception e) {
e.printStackTrace();
this.weatherReportList =
return this.weatherReportL
* 返回字符串中第一个符合regex的字符串,如果没有符合的,返回空字符串
* @param str
* @param regex
正则表达式
public static String getMatcher(String str, String regex) {
Matcher mat = pile(regex).matcher(str);
if (mat.find()) {
return mat.group();
return "";
* 返回字符串str中所有符合regex的子字符串。
* @param str
* @param regex
public static List&String& getAllMathers(String str, String regex) {
List&String& strList = new ArrayList&String&();
Matcher mat = pile(regex).matcher(str);
while (mat.find()) {
strList.add(mat.group());
return strL
* 从获取城市(区域county)和城市所对应的编号(区域编号cid)。&br/&
* 并保存到xml文件"weathercn.xml"。如果已经存在weathercn.xml文件,那么不会再次获取。
* @throws Exception
private static void prepareXML() throws Exception {
* 如果xml文件已经存在,不用再次获取。
File file = new File(XML_FILE);
if (file.exists()) {
// 提示xml文件位置,不需要可以注释掉。
System.out.println("在下面的路径中找到XML文件 " + file.getCanonicalPath());
// 用DOM创建XML文档
Document doc = DocumentBuilderFactory.newInstance()
.newDocumentBuilder().newDocument();
// 创建XML文档root element
Element root = doc.createElement("root");
doc.appendChild(root);
// 省province
WebPageUtil webPageUtil = new WebPageUtil().processUrl(PROVINCE_URL);
String provincePage = webPageUtil.getWebContent();
Hashtable&String, String& provinceTable = parseProvincePage(provincePage);
for (String province : provinceTable.keySet()) {
// 进度提示,不需要可以注释掉
System.out.println(String.format("正在获取%s的城市信息...", province));
Element eleProvince = doc.createElement(province);
eleProvince.setAttribute("pid", provinceTable.get(province));
root.appendChild(eleProvince);
String districtPage = new WebPageUtil().processUrl(
String.format(DISTRICT_URL, provinceTable.get(province)))
.getWebContent();
Hashtable&String, String& districtTable = parseDistrictPage(districtPage);
for (String district : districtTable.keySet()) {
Element eleDistrict = doc.createElement(district);
eleDistrict.setAttribute("did", districtTable.get(district));
eleProvince.appendChild(eleDistrict);
// long time = System.currentTimeMillis();
String countyPage = new WebPageUtil().processUrl(
String.format(COUNTY_URL, districtTable.get(district),
provinceTable.get(province))).getWebContent();
Hashtable&String, String& countyTable = parseCountyPage(countyPage);
for (String county : countyTable.keySet()) {
Element eleCounty = doc.createElement(county);
eleCounty.setAttribute("cid", countyTable.get(county));
eleDistrict.appendChild(eleCounty);
// System.out.println(String.format("%s-&%s-&%s %s",
// province, district, county,
// System.currentTimeMillis()-time));
// 进度提示,不需要可以注释掉
System.out.println(String.format("已成功获取%s的城市信息", province));
// 将获取到的信息保存到xml文件中
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(
"{http://xml.apache.org/xslt}indent-amount", "2");
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(file);
transformer.transform(source, result);
System.out.println("XML文件已经被成功创建 " + file.getCanonicalPath());
* 从的市页面中获取区县信息。&br/&
* 例如:从成都市页面中获取新津,双流等区县的编号。
* @param page
public static Hashtable&String, String& parseCountyPage(String page) {
return getKeyValues(page,
"&a href=\"index.do\\?cid=?.+?&pid=.+?class=\"c\"&.+?&/a&",
"(?&=&).+?(?=&/a&)", "(?&=cid=)[0-9]+");
* 从的省页面中获取省市信息。&br/&
* 例如:从四川省的页面获取成都,绵羊等市的编号。
* @param page
public static Hashtable&String, String& parseDistrictPage(String page) {
return getKeyValues(page, "&a href=\"cout.do\\?.+?class=\"c\"&.+?&/a&",
"(?&=&).+?(?=&/a&)", "(?&=did=)[0-9]+");
* 从的国内页面中获取省市信息。&br/&
* 例如:从国内页面获取四川省,山东省,北京市等的编号。
* @param page
public static Hashtable&String, String& parseProvincePage(String page) {
return getKeyValues(page, "&a href=\"dis.do?.+?class=\"c\"&.+?&/a&",
"(?&=&).+?(?=&/a&)", "(?&=pid=)[0-9]+");
* 从页面里面获取所需要的信息。
* @param webPage
* @param tagRegex
正则表达式,用以获取包含key和value的内容,保存在字符串tag中
* @param keyRegex
正则表达式,用以从tag获取key的值
* @param valueRegex
正则表达式,用以从tag获取value的值
* @return 返回网页中所有匹配的key和value,如果没有,返回一个空的table,table.size()=0
public static Hashtable&String, String& getKeyValues(String webPage,
String tagRegex, String keyRegex, String valueRegex) {
Hashtable&String, String& table = new Hashtable&String, String&();
for (String tag : getAllMathers(webPage, tagRegex)) {
table.put(getMatcher(tag, keyRegex), getMatcher(tag, valueRegex));
* 获取指定城市或者区域的天气预报页面。
* @param city
* @return 返回天气预报页面的源代码。错误或者城市不正确等则返回空字符串。
* @throws Exception
public String getWeatherReportPage(String city) throws Exception {
Document doc = DocumentBuilderFactory.newInstance()
.newDocumentBuilder().parse(XML_FILE);
NodeList nodeList = doc.getElementsByTagName(city);
for (int i = 0; i & nodeList.getLength(); i++) {
Element ele = (Element) nodeList.item(i);
if (!ele.getAttribute("cid").equals("")) {
return new WebPageUtil().processUrl(
String.format(REPORT7_URL, ele.getAttribute("cid")))
.getWebContent();
return "";
2.获取网页内容的类
WebPageUtil.java
package com.siqi.
import java.io.InputS
import java.net.S
import java.nio.charset.C
//import java.util.logging.L
import java.util.regex.M
import java.util.regex.P
* 一个简单的类,用来获取网页内容
* @author siqi
public class WebPageUtil {
private static boolean debug =
* 消息头,包含http资源或者http服务器的一些属性,例如:&BR/&
* HTTP/1.1 200 OK&BR/&
* Server: nginx/0.7.68&BR/&
* Date: Tue, 22 Jan :21 GMT&BR/&
* Content-Type: image/jpeg&BR/&
* Content-Length: 6372&BR/&
* Last-Modified: Sun, 29 Apr :01 GMT&BR/&
* Connection: close&BR/&
* Expires: Mon, 18 Nov :21 GMT&BR/&
* Cache-Control: max-age=&BR/&
private String msgH
* 消息头的字符缓存
private StringBuffer msgHeaderBuffer = new StringBuffer();
* 网页内容编码
* 缓存大小(单位:字节)
private int buffer_size = 4096;
* 网页内容
private byte[] bytes = new byte[0];
* 一个调用WebUtil的例子
* @param args
public static void main(String[] args) {
String url = "/common/province.jsp";
WebPageUtil webPageUtil = new WebPageUtil().processUrl(url);
System.out.println("=======Header :=======\r\n"+webPageUtil.getMsgHeader());
System.out.println("=======Content:=======\r\n"+webPageUtil.getWebContent());
} catch (Exception e) {
e.printStackTrace();
* 使用Socket请求(获取)一个网页。&br/&
* 例如:&br/&
* processUrl("/")会获取百度首页;&br/&
* @param url
这个网页或者网页内容的地址
* @throws Exception
public WebPageUtil processUrl(String url) throws Exception {
url = formatUrl(url);
// 设置要连接的服务器地址
Socket socket = new Socket(getHost(url), getPort(url));
socket.setSoTimeout(3000);
// 构造请求,详情请参考HTTP协议(RFC2616)
String request = String.format("GET %s HTTP/1.0\r\n", getSubUrl(url));
request += String.format("HOST: %s \r\n\r\n", getHost(url));
if(debug) {
System.out.println("request:\r\n"+request);
// 发送请求
socket.getOutputStream().write(request.getBytes());
// 设置缓存,最好跟的socket接收缓存一样
this.buffer_size = socket.getReceiveBufferSize();
byte[] bytesBuffer = new byte[buffer_size];// 缓存InputStream的原始数据
char[] charsBuffer = new char[buffer_size];// 缓存InputStream的字符数据
// 来自服务器响应(InputStream)
InputStream is = socket.getInputStream();
// 局部变量,读取到的内容长度(字节)
int bytesLength = 0;
// 局部变量,判断消息头是否读取完毕
boolean headerComplete =
// 从InputStream中读取网页的内容,如果读取到的内容
// 长度为-1,则读取完毕
while ((bytesLength = is.read(bytesBuffer, 0, buffer_size)) != -1) {
if (headerComplete) {
SaveBytes(bytesBuffer, 0, bytesLength);
int bufferLength = msgHeaderBuffer.length();
msgHeaderBuffer.append(
bytes2chars(bytesBuffer, charsBuffer, bytesLength), 0,
bytesLength);
int msgEndIndex = msgHeaderBuffer.indexOf("\r\n\r\n");
if (msgEndIndex != -1) {
headerComplete =
msgHeader = "Url: " + url + "\r\n"
+ msgHeaderBuffer.substring(0, msgEndIndex);
int temp = msgEndIndex - bufferLength + 4;
SaveBytes(bytesBuffer, temp, bytesLength - temp);
socket.close();
//获取网页编码
this.getCharset();
* 根据网址获取服务器端口。&br/&
* http 端口为80&br/&
* https端口为443
* @param url
public static int getPort(String url) {
int port = 0;
if (url.startsWith("https://")) {
port = 443;
} else if (url.startsWith("http://")) {
port = 80;
if(debug) {
System.out.println("port: "+port);
* 根据网址,获取服务器地址&br/&
* 例如:&br/&
* /common/province.jsp&p&
* 返回:&br/&
* @param url 网址
public static String getHost(String url) {
String host = "";
Matcher mat = pile("(?&=https?://).+?(?=/)").matcher(url);
if(mat.find()) {
host = mat.group();
if(debug) {
System.out.println("host: "+host);
* 根据网址,获取网页路径
* 例如:&br/&
* /common/province.jsp&p&
* 返回:&br/&
* /common/province.jsp
* @param url
* @return 如果没有获取到网页路径,返回"";
public static String getSubUrl(String url) {
String subUrl = "";
Matcher mat = pile("https?://.+?(?=/)").matcher(url);
if(mat.find()) {
subUrl = url.substring(mat.group().length());
if(debug) {
System.out.println("subUrl: "+subUrl);
return subU
* 在某些网址上加个"/"&br/&
* 例如:&br/&
* 返回:&br/&
* 例如:&br/&
* /xxxx&br/&
* 返回:(没有加"/")&br/&
* /xxxx&br/&
* @param url
public static String formatUrl(String url) {
Matcher mat = pile("https?://[^/]+").matcher(url);
if (mat.find() && mat.group().equals(url)) {
return url + "/";
* 把从输入流中读取到的数据保存到bytes数组中,
* 每次都创建一个新的byte[]来存储原来bytes[]数组中的数据和
* 新读取到的b中的数据。
* @param b 存储内容的byte[]
* @param start 内容的起始位置,从0开始
* @param length 内容的长度
* @throws Exception
private void SaveBytes(byte[] b, int start, int length) throws Exception {
//do some check
if(start&0 || length&0) {
throw new Exception("start/length is incorrect.");
//新建一个byte数组
byte[] newBytes = new byte[bytes.length+length];
System.arraycopy(bytes, 0, newBytes, 0, bytes.length);
System.arraycopy(b, start, newBytes, bytes.length, length);
bytes = newB
* 将字节数据转换成字符数据
* @param srcBytes
* @param dstChars
* @param length
private char[] bytes2chars(byte[] srcBytes, char[] dstChars, int length) {
for (int i = 0; i & i++) {
dstChars[i] = (char) srcBytes[i];
return dstC
* 获取网页资源(文件)的消息头,里面包含了服务器和资源的一些属性
public String getMsgHeader() {
return msgH
* 获取网页或网页资源的编码,如果在消息头里面没有找到编码,那么就
* 返回系统默认编码。
public Charset getCharset() {
String header = this.msgHeader.toUpperCase();
Matcher mat = pile("CHARSET=.+").matcher(header);
if(mat.find()) {
this.charset = Charset.forName(mat.group().split("=")[1]);
this.charset = Charset.defaultCharset();
* 获取网页内容
public String getWebContent() {
return new String(bytes, charset);
3.天气预报类
WeatherReport.java
package com.siqi.
* 天气预报类,天气预报的基本属性。
* @author siqi
public class WeatherReport {
* 城市(区县)
private String weekD
private String windD
* 白天还是晚上
private String dayOrN
* 获取天气预报的城市。
public String getCity() {
* 设置天气预报的城市。
* @param city
public void setCity(String city) {
this.city =
* 获取天气预报的日期,格式为"1月28日"
public String getDate() {
* 设置天气预报的日期,格式为"1月28日"
* @param date
public void setDate(String date) {
this.date =
* 获取天气预报的星期
public String getWeekDay() {
return weekD
* 设置天气预报的星期
* @param weekDay
public void setWeekDay(String weekDay) {
this.weekDay = weekD
* 获取天气
public String getWeather() {
* 设置天气
* @param weather
public void setWeather(String weather) {
this.weather =
* 获取温度
public String getTemperature() {
* 设置温度
* @param temperature
public void setTemperature(String temperature) {
this.temperature =
* 获取风向
public String getWindDir() {
return windD
* 设置风向
* @param windDir
public void setWindDir(String windDir) {
this.windDir = windD
* 获取风力
public String getWind() {
* 设置风力
* @param wind
public void setWind(String wind) {
this.wind =
* 获取天气预报是白天还是晚上
public String getDayOrNight() {
return dayOrN
* 设置天气预报是白天还是晚上
* @param dayOrNight
public void setDayOrNight(String dayOrNight) {
this.dayOrNight = dayOrN
* 天气预报的字符串
public String toString() {
return "WeatherReport [city=" + city + ", date=" + date + ", weekDay="
+ weekDay + ", weather=" + weather + ", temperature="
+ temperature + ", windDir=" + windDir + ", wind=" + wind
+ ", dayOrNight=" + dayOrNight + "]";
4.测试,例
WeatherSample.java
package com.siqi.
import java.util.L
import com.siqi.weather.WeatherR
import com.siqi.weather.WeatherU
public class WeatherSample {
* 一个简单的应用
* @param args
public static void main(String[] args) {
// 获取成都的天气预报信息。
String city = "海南";
System.out.println(city + "未来7天天气预报信息:");
List&WeatherReport& listReport = new WeatherUtil()
.getWeatherReports(city);
if (listReport.size() & 1) {
System.out.println("没有找到 " + city + " 的天气预报。");
for (WeatherReport report : listReport) {
System.out.println(report);
海南未来7天天气预报信息:
在下面的路径中找到XML文件 C:\workspaces\01_java\Weather\weathercn.xml
WeatherReport [city=海南, date=1月28日, weekDay=星期一, weather=晴, temperature=-14&C, windDir=, wind=微风, dayOrNight=夜晚]
WeatherReport [city=海南, date=1月29日, weekDay=星期二, weather=多云, temperature=1&C, windDir=, wind=微风, dayOrNight=白天]
WeatherReport [city=海南, date=1月29日, weekDay=星期二, weather=多云, temperature=-15&C, windDir=, wind=微风, dayOrNight=夜晚]
WeatherReport [city=海南, date=1月30日, weekDay=星期三, weather=多云, temperature=4&C, windDir=, wind=微风, dayOrNight=白天]
WeatherReport [city=海南, date=1月30日, weekDay=星期三, weather=多云, temperature=-12&C, windDir=, wind=微风, dayOrNight=夜晚]
WeatherReport [city=海南, date=1月31日, weekDay=星期四, weather=多云, temperature=4&C, windDir=, wind=微风, dayOrNight=白天]
WeatherReport [city=海南, date=1月31日, weekDay=星期四, weather=多云, temperature=-14&C, windDir=, wind=微风, dayOrNight=夜晚]
WeatherReport [city=海南, date=2月1日, weekDay=星期五, weather=晴, temperature=0&C, windDir=, wind=微风, dayOrNight=白天]
WeatherReport [city=海南, date=2月1日, weekDay=星期五, weather=多云, temperature=-16&C, windDir=, wind=微风, dayOrNight=夜晚]
WeatherReport [city=海南, date=2月2日, weekDay=星期六, weather=阴, temperature=-3&C, windDir=, wind=微风, dayOrNight=白天]
WeatherReport [city=海南, date=2月2日, weekDay=星期六, weather=晴, temperature=-17&C, windDir=, wind=微风, dayOrNight=夜晚]
WeatherReport [city=海南, date=2月3日, weekDay=星期日, weather=多云, temperature=0&C, windDir=, wind=微风, dayOrNight=白天]
WeatherReport [city=海南, date=2月3日, weekDay=星期日, weather=晴, temperature=-17&C, windDir=, wind=微风, dayOrNight=夜晚]
注:第一次执行的时候会在项目路径下面创建weathercn.xml,里面保存的是区县和区县编号信息。
正在获取云南的城市信息...
已成功获取云南的城市信息
正在获取湖北的城市信息...
已成功获取湖北的城市信息
正在获取河南的城市信息...
已成功获取河南的城市信息
正在获取四川的城市信息...
已成功获取四川的城市信息
正在获取青海的城市信息...
已成功获取青海的城市信息
正在获取台湾的城市信息...
已成功获取台湾的城市信息
正在获取辽宁的城市信息...
已成功获取辽宁的城市信息
正在获取浙江的城市信息...
已成功获取浙江的城市信息
正在获取山西的城市信息...
已成功获取山西的城市信息
正在获取广西的城市信息...
已成功获取广西的城市信息
正在获取吉林的城市信息...
已成功获取吉林的城市信息
正在获取陕西的城市信息...
已成功获取陕西的城市信息
正在获取内蒙古的城市信息...
已成功获取内蒙古的城市信息
正在获取福建的城市信息...
已成功获取福建的城市信息
正在获取宁夏的城市信息...
已成功获取宁夏的城市信息
正在获取河北的城市信息...
已成功获取河北的城市信息
正在获取江西的城市信息...
已成功获取江西的城市信息
正在获取重庆的城市信息...
已成功获取重庆的城市信息
正在获取黑龙江的城市信息...
已成功获取黑龙江的城市信息
正在获取甘肃的城市信息...
已成功获取甘肃的城市信息
正在获取北京的城市信息...
已成功获取北京的城市信息
正在获取香港的城市信息...
已成功获取香港的城市信息
正在获取湖南的城市信息...
已成功获取湖南的城市信息
正在获取安徽的城市信息...
已成功获取安徽的城市信息
正在获取山东的城市信息...
已成功获取山东的城市信息
正在获取天津的城市信息...
已成功获取天津的城市信息
正在获取贵州的城市信息...
已成功获取贵州的城市信息
正在获取广东的城市信息...
已成功获取广东的城市信息
正在获取上海的城市信息...
已成功获取上海的城市信息
正在获取海南的城市信息...
已成功获取海南的城市信息
正在获取西藏的城市信息...
已成功获取西藏的城市信息
正在获取新疆的城市信息...
已成功获取新疆的城市信息
正在获取江苏的城市信息...
已成功获取江苏的城市信息
正在获取澳门的城市信息...
已成功获取澳门的城市信息
XML文件已经被成功创建

我要回帖

更多关于 成都未来七天天气预报 的文章

 

随机推荐