通过城市代码获取免费天气预报

这里主要用到就是通过城市名称获取城市代码,拼装URL去方位免费天气预报的网站获取资源信息,然后保存解析,展现给user。
如果想要运行下面的代码,首先要新建一个PHP的project,把下面三个文件拷贝进去,然后开启server,在浏览器上运行,如果不能访问,可以转换下你PC的代理,应该可以访问。有问题可以联系我~谢谢


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<form action="weatherInfo.php" method="post">
CITY: <input type="text" name="city"/>
<input type="submit"/>

</form>
</body>
</html>



<?php


/*
* Created on Aug 1, 2012
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
*/
ini_set('default_charset','utf-8');
echo 'weather information<br/>';

$city = $_POST["city"];

$weatherInfo = getInfo($city);
save($weatherInfo);
display($weatherInfo);

function getInfo($city) {
$url = "http://m.weather.com.cn/data/" . getCityCode($city) . ".html";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, "xxx.xxx.xxx:80");
curl_setopt($ch, CURLOPT_PROXYPORT, 80);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}

function save($content){
$fileName = "./info.txt";
$file = fopen($fileName, "w");
fwrite($file, $content);
fclose($file);
}

function getCityCode($city) {
$content = file_get_contents("./city.txt");
$cities = json_decode($content);
return $cities-> {$city};
}

function display($content) {

$info = json_decode($content);
$weatherInfo = $info->{"weatherinfo"};
showToday($weatherInfo);
echo "<br/>";
showTomorrow($weatherInfo);
}

function showToday($weatherInfo){
echo "城市:" . $weatherInfo->{"city"} . "<br/>";
echo "日期:" . $weatherInfo->{"date_y"} . " " . $weatherInfo->{"week"} . "<br/>";
echo "温度:" . $weatherInfo->{"temp1"} . "<br/>" ;
echo "天气:" . $weatherInfo->{"weather1"} . " " . $weatherInfo->{"wind1"} . "<br/>";
echo $weatherInfo->{"index_d"} . "<br/>";
}

function showTomorrow($weatherInfo){
echo "城市:" . $weatherInfo->{"city"} . "<br/>";
echo "日期:" . getDateByCount(1) . " " . getDayByCount(1) . "<br/>";
echo "温度:" . $weatherInfo->{"temp2"} . "<br/>" ;
echo "天气:" . $weatherInfo->{"weather2"} . " " . $weatherInfo->{"wind2"} . "<br/>";
echo $weatherInfo->{"index48_d"} . "<br/>";
}

function getDateByCount($count){
$time = time() + 60 * 60 * 24 * $count;
return date("Y年n月d日", $time);
}

function getDayByCount($count){
$time = time() + 60 * 60 * 24 * $count;
return getWeek(date("N", $time));
}

function getWeek($num){
switch ($num){
case "0":
return "星期天";
break;
case "1":
return "星期一";
break;
case "2":
return "星期二";
break;
case "3":
return "星期三";
break;
case "4":
return "星期四";
break;
case "5":
return "星期五";
break;
case "6":
return "星期六";
break;
default:
return "数字:" . $num . " 没有对应的week!";
break;
}

}


city.txt就是存放城市代码的


{"北京":
"101010100"
,

"朝阳":
"101010300"
,

"顺义":
"101010400"
,

"怀柔":
"101010500"
,

"通州":
"101010600"
,

"昌平":
"101010700"
,

"延庆":
"101010800"
,

"丰台":
"101010900"
,

"石景山":
"101011000"
,

"大兴":
"101011100"
,

"房山":
"101011200"
,

"密云":
"101011300"
,

"门头沟":
"101011400"
,

"平谷":
"101011500"
,

"八达岭":
"101011600"
,

"佛爷顶":
"101011700"
,

"汤河口":
"101011800"
,

"密云上甸子":
"101011900"
,

"斋堂":
"101012000"
,

"霞云岭":
"101012100"
,

"北京城区":
"101012200"
,

"海淀":
"101010200"
,

"天津":
"101030100"
,

"宝坻":
"101030300"
,

"东丽":
"101030400"
,

"西青":
"101030500"
,

"北辰":
"101030600"
,

"蓟县":
"101031400"
,

"汉沽":
"101030800"
,

"静海":
"101030900"
,

"津南":
"101031000"
,

"塘沽":
"101031100"
,

"大港":
"101031200"
,

"武清":
"101030200"
,

"宁河":
"101030700"
,
"上海":
"101020100"
,

"宝山":
"101020300"
,

"嘉定":
"101020500"
,

"南汇":
"101020600"
,

"浦东":
"101021300"
,

"青浦":
"101020800"
,

"松江":
"101020900"
,

"奉贤":
"101021000"
,

"崇明":
"101021100"
,

"徐家汇":
"101021200"
,

"闵行":
"101020200"
,

"金山":
"101020700"
,
"石家庄":
"101090101"
,

"张家口":
"101090301"
,

"承德":
"101090402"
,

"唐山":
"101090501"
,

"秦皇岛":
"101091101"
,

"沧州":
"101090701"
,

"衡水":
"101090801"
,

"邢台":
"101090901"
,

"邯郸":
"101091001"
,

"保定":
"101090201"
,

"廊坊":
"101090601"
,
"郑州":
"101180101"
,

"新乡":
"101180301"
,

"许昌":
"101180401"
,

"平顶山":
"101180501"
,

"信阳":
"101180601"
,

"南阳":
"101180701"
,

"开封":
"101180801"
,

"洛阳":
"101180901"
,

"商丘":
"101181001"
,

"焦作":
"101181101"
,

"鹤壁":
"101181201"
,

"濮阳":
"101181301"
,

"周口":
"101181401"
,

"漯河":
"101181501"
,

"驻马店":
"101181601"
,

"三门峡":
"101181701"
,

"济源":
"101181801"
,

"安阳":
"101180201"
,
"合肥":
"101220101"
,

"芜湖":
"101220301"
,

"淮南":
"101220401"
,

"马鞍山":
"101220501"
,

"安庆":
"101220601"
,

"宿州":
"101220701"
,

"阜阳":
"101220801"
,

"亳州":
"101220901"
,

"黄山":
"101221001"
,

"滁州":
"101221101"
,

"淮北":
"101221201"
,

"铜陵":
"101221301"
,

"宣城":
"101221401"
,

"六安":
"101221501"
,

"巢湖":
"101221601"
,

"池州":
"101221701"
,

"蚌埠":
"101220201"
,
"杭州":
"101210101"
,

"舟山":
"101211101"
,

"湖州":
"101210201"
,

"嘉兴":
"101210301"
,

"金华":
"101210901"
,

"绍兴":
"101210501"
,

"台州":
"101210601"
,

"温州":
"101210701"
,

"丽水":
"101210801"
,

"衢州":
"101211001"
,

"宁波":
"101210401"
,
"重庆":
"101040100"
,

"合川":
"101040300"
,

"南川":
"101040400"
,

"江津":
"101040500"
,

"万盛":
"101040600"
,

"渝北":
"101040700"
,

"北碚":
"101040800"
,

"巴南":
"101040900"
,

"长寿":
"101041000"
,

"黔江":
"101041100"
,

"万州天城":
"101041200"
,

"万州龙宝":
"101041300"
,

"涪陵":
"101041400"
,

"开县":
"101041500"
,

"城口":
"101041600"
,

"云阳":
"101041700"
,

"巫溪":
"101041800"
,

"奉节":
"101041900"
,

"巫山":
"101042000"
,

"潼南":
"101042100"
,

"垫江":
"101042200"
,

"梁平":
"101042300"
,

"忠县":
"101042400"
,

"石柱":
"101042500"
,

"大足":
"101042600"
,

"荣昌":
"101042700"
,

"铜梁":
"101042800"
,

"璧山":
"101042900"
,

"丰都":
"101043000"
,

"武隆":
"101043100"
,

"彭水":
"101043200"
,

"綦江":
"101043300"
,

"酉阳":
"101043400"
,

"秀山":
"101043600"
,

"沙坪坝":
"101043700"
,

"永川":
"101040200"
,
"福州":
"101230101"
,

"泉州":
"101230501"
,

"漳州":
"101230601"
,

"龙岩":
"101230701"
,

"晋江":
"101230509"
,

"南平":
"101230901"
,

"厦门":
"101230201"
,

"宁德":
"101230301"
,

"莆田":
"101230401"
,

"三明":
"101230801"
,
"兰州":
"101160101"
,

"平凉":
"101160301"
,

"庆阳":
"101160401"
,

"武威":
"101160501"
,

"金昌":
"101160601"
,

"嘉峪关":
"101161401"
,

"酒泉":
"101160801"
,

"天水":
"101160901"
,

"武都":
"101161001"
,

"临夏":
"101161101"
,

"合作":
"101161201"
,

"白银":
"101161301"
,

"定西":
"101160201"
,

"张掖":
"101160701"
,
"广州":
"101280101"
,

"惠州":
"101280301"
,

"梅州":
"101280401"
,

"汕头":
"101280501"
,

"深圳":
"101280601"
,

"珠海":
"101280701"
,

"佛山":
"101280800"
,

"肇庆":
"101280901"
,

"湛江":
"101281001"
,

"江门":
"101281101"
,

"河源":
"101281201"
,

"清远":
"101281301"
,

"云浮":
"101281401"
,

"潮州":
"101281501"
,

"东莞":
"101281601"
,

"中山":
"101281701"
,

"阳江":
"101281801"
,

"揭阳":
"101281901"
,

"茂名":
"101282001"
,

"汕尾":
"101282101"
,

"韶关":
"101280201"
,
"南宁":
"101300101"
,

"柳州":
"101300301"
,

"来宾":
"101300401"
,

"桂林":
"101300501"
,

"梧州":
"101300601"
,

"防城港":
"101301401"
,

"贵港":
"101300801"
,

"玉林":
"101300901"
,

"百色":
"101301001"
,

"钦州":
"101301101"
,

"河池":
"101301201"
,

"北海":
"101301301"
,

"崇左":
"101300201"
,

"贺州":
"101300701"
,
"贵阳":
"101260101"
,

"安顺":
"101260301"
,

"都匀":
"101260401"
,

"兴义":
"101260906"
,

"铜仁":
"101260601"
,

"毕节":
"101260701"
,

"六盘水":
"101260801"
,

"遵义":
"101260201"
,

"凯里":
"101260501"
,
"昆明":
"101290101"
,

"红河":
"101290301"
,

"文山":
"101290601"
,

"玉溪":
"101290701"
,

"楚雄":
"101290801"
,

"普洱":
"101290901"
,

"昭通":
"101291001"
,

"临沧":
"101291101"
,

"怒江":
"101291201"
,

"香格里拉":
"101291301"
,

"丽江":
"101291401"
,

"德宏":
"101291501"
,

"景洪":
"101291601"
,

"大理":
"101290201"
,

"曲靖":
"101290401"
,

"保山":
"101290501"
,
"呼和浩特":
"101080101"
,

"乌海":
"101080301"
,

"集宁":
"101080401"
,

"通辽":
"101080501"
,

"阿拉善左旗":
"101081201"
,

"鄂尔多斯":
"101080701"
,

"临河":
"101080801"
,

"锡林浩特":
"101080901"
,

"呼伦贝尔":
"101081000"
,

"乌兰浩特":
"101081101"
,

"包头":
"101080201"
,

"赤峰":
"101080601"
,
"南昌":
"101240101"
,

"上饶":
"101240301"
,

"抚州":
"101240401"
,

"宜春":
"101240501"
,

"鹰潭":
"101241101"
,

"赣州":
"101240701"
,

"景德镇":
"101240801"
,

"萍乡":
"101240901"
,

"新余":
"101241001"
,

"九江":
"101240201"
,

"吉安":
"101240601"
,
"武汉":
"101200101"
,

"黄冈":
"101200501"
,

"荆州":
"101200801"
,

"宜昌":
"101200901"
,

"恩施":
"101201001"
,

"十堰":
"101201101"
,

"神农架":
"101201201"
,

"随州":
"101201301"
,

"荆门":
"101201401"
,

"天门":
"101201501"
,

"仙桃":
"101201601"
,

"潜江":
"101201701"
,

"襄樊":
"101200201"
,

"鄂州":
"101200301"
,

"孝感":
"101200401"
,

"黄石":
"101200601"
,

"咸宁":
"101200701"
,
"成都":
"101270101"
,

"自贡":
"101270301"
,

"绵阳":
"101270401"
,

"南充":
"101270501"
,

"达州":
"101270601"
,

"遂宁":
"101270701"
,

"广安":
"101270801"
,

"巴中":
"101270901"
,

"泸州":
"101271001"
,

"宜宾":
"101271101"
,

"内江":
"101271201"
,

"资阳":
"101271301"
,

"乐山":
"101271401"
,

"眉山":
"101271501"
,

"凉山":
"101271601"
,

"雅安":
"101271701"
,

"甘孜":
"101271801"
,

"阿坝":
"101271901"
,

"德阳":
"101272001"
,

"广元":
"101272101"
,

"攀枝花":
"101270201"
,
"银川":
"101170101"
,

"中卫":
"101170501"
,

"固原":
"101170401"
,

"石嘴山":
"101170201"
,

"吴忠":
"101170301"
,
"西宁":
"101150101"
,

"黄南":
"101150301"
,

"海北":
"101150801"
,

"果洛":
"101150501"
,

"玉树":
"101150601"
,

"海西":
"101150701"
,

"海东":
"101150201"
,

"海南":
"101150401"
,
"济南":
"101120101"
,

"潍坊":
"101120601"
,

"临沂":
"101120901"
,

"菏泽":
"101121001"
,

"滨州":
"101121101"
,

"东营":
"101121201"
,

"威海":
"101121301"
,

"枣庄":
"101121401"
,

"日照":
"101121501"
,

"莱芜":
"101121601"
,

"聊城":
"101121701"
,

"青岛":
"101120201"
,

"淄博":
"101120301"
,

"德州":
"101120401"
,

"烟台":
"101120501"
,

"济宁":
"101120701"
,

"泰安":
"101120801"
,
"西安":
"101110101"
,

"延安":
"101110300"
,

"榆林":
"101110401"
,

"铜川":
"101111001"
,

"商洛":
"101110601"
,

"安康":
"101110701"
,

"汉中":
"101110801"
,

"宝鸡":
"101110901"
,

"咸阳":
"101110200"
,

"渭南":
"101110501"
,
"太原":
"101100101"
,

"临汾":
"101100701"
,

"运城":
"101100801"
,

"朔州":
"101100901"
,

"忻州":
"101101001"
,

"长治":
"101100501"
,

"大同":
"101100201"
,

"阳泉":
"101100301"
,

"晋中":
"101100401"
,

"晋城":
"101100601"
,

"吕梁":
"101101100"
,
"乌鲁木齐":
"101130101"
,

"石河子":
"101130301"
,

"昌吉":
"101130401"
,

"吐鲁番":
"101130501"
,

"库尔勒":
"101130601"
,

"阿拉尔":
"101130701"
,

"阿克苏":
"101130801"
,

"喀什":
"101130901"
,

"伊宁":
"101131001"
,

"塔城":
"101131101"
,

"哈密":
"101131201"
,

"和田":
"101131301"
,

"阿勒泰":
"101131401"
,

"阿图什":
"101131501"
,

"博乐":
"101131601"
,

"克拉玛依":
"101130201"
,
"拉萨":
"101140101"
,

"山南":
"101140301"
,

"阿里":
"101140701"
,

"昌都":
"101140501"
,

"那曲":
"101140601"
,

"日喀则":
"101140201"
,

"林芝":
"101140401"
,
"台北县":
"101340101"
,

"高雄":
"101340201"
,

"台中":
"101340401"
,
"海口":
"101310101"
,

"三亚":
"101310201"
,

"东方":
"101310202"
,

"临高":
"101310203"
,

"澄迈":
"101310204"
,

"儋州":
"101310205"
,

"昌江":
"101310206"
,

"白沙":
"101310207"
,

"琼中":
"101310208"
,

"定安":
"101310209"
,

"屯昌":
"101310210"
,

"琼海":
"101310211"
,

"文昌":
"101310212"
,

"保亭":
"101310214"
,

"万宁":
"101310215"
,

"陵水":
"101310216"
,

"西沙":
"101310217"
,

"南沙岛":
"101310220"
,

"乐东":
"101310221"
,

"五指山":
"101310222"
,

"琼山":
"101310102"
,
"长沙":
"101250101"
,

"株洲":
"101250301"
,

"衡阳":
"101250401"
,

"郴州":
"101250501"
,

"常德":
"101250601"
,

"益阳":
"101250700"
,

"娄底":
"101250801"
,

"邵阳":
"101250901"
,

"岳阳":
"101251001"
,

"张家界":
"101251101"
,

"怀化":
"101251201"
,

"黔阳":
"101251301"
,

"永州":
"101251401"
,

"吉首":
"101251501"
,

"湘潭":
"101250201"
,
"南京":
"101190101"
,

"镇江":
"101190301"
,

"苏州":
"101190401"
,

"南通":
"101190501"
,

"扬州":
"101190601"
,

"宿迁":
"101191301"
,

"徐州":
"101190801"
,

"淮安":
"101190901"
,

"连云港":
"101191001"
,

"常州":
"101191101"
,

"泰州":
"101191201"
,

"无锡":
"101190201"
,

"盐城":
"101190701"
,
"哈尔滨":
"101050101"
,

"牡丹江":
"101050301"
,

"佳木斯":
"101050401"
,

"绥化":
"101050501"
,

"黑河":
"101050601"
,

"双鸭山":
"101051301"
,

"伊春":
"101050801"
,

"大庆":
"101050901"
,

"七台河":
"101051002"
,

"鸡西":
"101051101"
,

"鹤岗":
"101051201"
,

"齐齐哈尔":
"101050201"
,

"大兴安岭":
"101050701"
,
"长春":
"101060101"
,

"延吉":
"101060301"
,

"四平":
"101060401"
,

"白山":
"101060901"
,

"白城":
"101060601"
,

"辽源":
"101060701"
,

"松原":
"101060801"
,

"吉林":
"101060201"
,

"通化":
"101060501"
,
"沈阳":
"101070101"
,

"鞍山":
"101070301"
,

"抚顺":
"101070401"
,

"本溪":
"101070501"
,

"丹东":
"101070601"
,

"葫芦岛":
"101071401"
,

"营口":
"101070801"
,

"阜新":
"101070901"
,

"辽阳":
"101071001"
,

"铁岭":
"101071101"
,

"朝阳":
"101071201"
,

"盘锦":
"101071301"
,

"大连":
"101070201"
,

"锦州":
"101070701"
}
要使用PyQt获取城市天气预报,可以通过以下步骤实现: 1. 首先,需要获取天气数据。可以使用爬虫方式获取天气网站的HTML页面,然后使用解析库(如BeautifulSoup)解析内容。另一种方法是使用天气预报网站提供的API接口直接获取结构化的数据,省去了解析HTML的工作。在这个例子中,我们选择使用中国天气网站提供的API接口\[2\]。 2. 使用PyQt创建一个界面,用于显示天气预报信息。可以使用PyQt的各种控件来设计界面,如标签、文本框等。在这个例子中,我们可以创建一个标签用于显示城市名,一个标签用于显示温度,一个标签用于显示风向等。 3. 在PyQt的主窗口类中,编写代码获取天气数据并将其显示在界面上。可以使用requests库发送HTTP请求来获取天气数据\[3\]。然后,从返回的JSON数据中提取所需的天气信息,并将其设置到相应的标签中。 4. 最后,将界面文件转为.py文件,并调用主窗口类来显示界面。 通过以上步骤,我们可以实现一个使用PyQt获取城市天气预报的程序。 #### 引用[.reference_title] - *1* *3* [PyQt5快速开发与实战 10.1 获取城市天气预报](https://blog.csdn.net/weixin_44226181/article/details/126083561)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [PyQt 5实战之城市天气预报](https://blog.csdn.net/qq_32019341/article/details/109564001)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值