PDA

View Full Version : نمایش وضعیت آب و هوا با استفاده از سایت MSN



farhad_tdk
جمعه 09 فروردین 1387, 20:00 عصر
سلام
من می خواهم گزارش وضعیت جوی رو در سایتم داشته باشم ولی اسم شهر من در لیست یاهو و ... وجود نداره و فقط در سایت msn هستش
از این سایت هم با استفاده از rss اطلاعاتی رو می گیرم ولی خیلی کلی یعنی نمی تونم به اون صورت که در برخی سایتها هست اطلاعات رو نشون بدم
اگر دوستان راهنمایی کنن ممنون می شم.

nazaninam
جمعه 09 فروردین 1387, 20:14 عصر
میشه آدرس Rss شهرتون رو بگذارید

farhad_tdk
جمعه 09 فروردین 1387, 23:33 عصر
http://weather.msn.com/RSS.aspx?wealocations=wc:6948526&weadegreetype=C

با استفاده از دستور زیر تا حدودی اطلاعات رو می ده
DataSet1.ReadXml(http://weather.msn.com/rss.aspx?wealocations=wc:6948526&weadegreetype=C)

Aidin
شنبه 10 فروردین 1387, 00:09 صبح
بیشتر از اطلاعاتی که این سایت میده که نمیتونید از این سایت بگیرید

miladr
شنبه 10 فروردین 1387, 00:19 صبح
منظور دوستموننشون دادن اون اطلاعات به صورت فارسی و به شکل دلخواه هست
که البته اینم کار سختیه چون msn اب و هوای هفت روز رو به صورت html نون میده نه به صورت item های جدا جدا

farhad_tdk
شنبه 10 فروردین 1387, 00:29 صبح
بغیر از msn آیا سایت دیگه ای هست که اطلاعات آب و هوای تمام شهرهای ایران رو بده البته بصورت آیتمهای جدا جدا؟

anubis_ir
شنبه 10 فروردین 1387, 01:50 صبح
بله.
https://addons.mozilla.org/en-US/firefox/addon/398

تمام شهرهای ایران رو ساپورت میکنه. خروجی آن یک xml است که به سادگی قابل خواندن است.
سورس add-on بالا رو کمی بررسی کنید مطالب جالبی داره.

miladr
شنبه 10 فروردین 1387, 01:56 صبح
البته سایت خود هواشناسی ایرانم هست
که البته باید نامه بزنی برات کاربر تعریف کنن بعدشم باید یه لوگو گنده که برات میل می کنن رو هم بزاری

anubis_ir
شنبه 10 فروردین 1387, 02:04 صبح
یک مثال از add-on بالا. خروجی زیر مربوط به تهران است:
http://forecastfox.accuweather.com/adcbin/forecastfox/weather_data.asp?location=MEA;IR;IR026;TEHRAN;&metric=1&partner=forecastfox
که با استفاده از کلاس XmlDocument دات نت به راحتی قابل استفاده است.

farhad_tdk
شنبه 10 فروردین 1387, 21:12 عصر
تشکر از راهنمایی تان
من از کد زیر برای دریافت اطلاعات استفاده می کنم
Dim d As XmlDocument = New XmlDocument()
d.Load(http://forecastfox.accuweather.com/adcbin/forecastfox/weather_data.asp?location=MEA;IR;IR026;TEHRAN;&metric=1&partner=forecastfox)


بقیه اش رو نمی دونم باید چکار کنم
اگر امکان دارد یه راهنمایی بفرمایید که چطور از xmlDocument برای دریافت اطلاعات استفاده بکنم .

anubis_ir
شنبه 10 فروردین 1387, 22:52 عصر
کد زیر خیلی سریع نوشته شده ولی قابل استفاده است: (فایلهای آیکون‌های مربوط به وضعیت هوا در فایل add-on معرفی شده بالا هست. آنرا دانلود کنید و بعد فایل رو با winrar باز کنید. بقیه‌اش مشخص است)


using System;
using System.Web.UI;
using System.Xml;

namespace MyTests
{
class XmlDocumentEx : XmlDocument
{
public string NodeText(string sXPathQuery, XmlNamespaceManager ns)
{
XmlNode oNode = base.SelectSingleNode(sXPathQuery, ns);
if (oNode != null)
return oNode.InnerText;
else
return "N/A";
}

public string NodeAttr(string sXPathQuery, string myAttr, XmlNamespaceManager ns)
{
XmlNode oNode = base.SelectSingleNode(sXPathQuery, ns);
if (oNode != null)
return oNode.Attributes.GetNamedItem(myAttr).InnerText;
else
return "N/A";
}
}

public partial class WebForm2 : System.Web.UI.Page
{
void TestAccuweather()
{
XmlDocumentEx ss = new XmlDocumentEx();
ss.Load("http://forecastfox.accuweather.com/adcbin/forecastfox/weather_data.asp?location=MEA;IR;IR026;TEHRAN;&metric=1&partner=forecastfox");
XmlNamespaceManager ns = new XmlNamespaceManager(ss.NameTable);
ns.AddNamespace("aw", "http://www.accuweather.com");

Response.Write("state: " + ss.NodeText("//aw:adc_database/aw:local/aw:state", ns));
Response.Write("<br/>");
Response.Write("time: " + ss.NodeText("//aw:adc_database/aw:local/aw:time", ns));
Response.Write("<br/>");
Response.Write("temperature: " + ss.NodeText("//aw:adc_database/aw:currentconditions/aw:temperature", ns));
Response.Write("<br/>");
Response.Write("humidity: " + ss.NodeText("//aw:adc_database/aw:currentconditions/aw:humidity", ns));
Response.Write("<br/>");
Response.Write("weathertext: " + ss.NodeText("//aw:adc_database/aw:currentconditions/aw:weathertext", ns));
Response.Write("<br/>");
string iconNumber = ss.NodeText("//aw:adc_database/aw:currentconditions/aw:weathericon", ns);
Response.Write("weathericon: <img src='large/" + iconNumber + ".png' /> " + "forecast" + iconNumber);
Response.Write("<br/>");
Response.Write("windgusts: " + ss.NodeText("//aw:adc_database/aw:currentconditions/aw:windgusts", ns));
Response.Write("<br/>");
Response.Write("windspeed: " + ss.NodeText("//aw:adc_database/aw:currentconditions/aw:windspeed", ns));
Response.Write("<br/>");
Response.Write("winddirection: " + ss.NodeText("//aw:adc_database/aw:currentconditions/aw:winddirection", ns));
Response.Write("<br/>");
Response.Write("sun rise: " + ss.NodeAttr("//aw:adc_database/aw:planets/aw:sun", "rise", ns));
Response.Write("<br/>");
Response.Write("sun set: " + ss.NodeAttr("//aw:adc_database/aw:planets/aw:sun", "set", ns));
Response.Write("<br/>");
Response.Write("sat. image: <img src='" + ss.NodeText("//aw:adc_database/aw:images/aw:radar", ns) + "' /> ");
Response.Write("<br/>");
Response.Write("lowtemperature: " + ss.NodeText("//aw:adc_database/aw:forecast/aw:day[@number='1']/aw:daytime/aw:lowtemperature", ns));
Response.Write("<br/>");
Response.Write("hightemperature: " + ss.NodeText("//aw:adc_database/aw:forecast/aw:day[@number='1']/aw:daytime/aw:hightemperature", ns));
}

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
TestAccuweather();
}
}
}

یک کار تمیز میتونه تبدیل کد بالا به یک حداقل یوزر کنترل باشه. (بقیه‌اش با شما)

farhad_tdk
شنبه 10 فروردین 1387, 23:01 عصر
از دوستان محترم بابت راهنمایی هایشان تشکر می کنم