سوال: مشکل در Parse کردن سایت
#1
Note 
سلام وقت بخیر

من از پک HtmlAgility برای Parse کردن سایت ها استفاده میکنم که توی دات نت های مختلف و برنامه نویسی مترو قابل استفاده هست.

کد:
        HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
        doc.LoadHtml(richTextBox3.Text);
        HtmlAgilityPack.HtmlNode node = doc.DocumentNode.SelectNodes("//body//section")[1];
        string html = node.InnerHtml.Replace("\"","'");
        string stt = "<div class='pos-summary'>";
        html = html.Substring(html.IndexOf(stt) + stt.Length);
        html = stt +html.Substring(0, html.LastIndexOf("</div>") + 0);

        HtmlAgilityPack.HtmlDocument doc2 = new HtmlAgilityPack.HtmlDocument();
        doc2.LoadHtml(html);

        HtmlAgilityPack.HtmlNodeCollection nodes = doc2.DocumentNode.SelectNodes("//a");
        string content = null;
        foreach (HtmlAgilityPack.HtmlNode item in nodes)
        {
            content += "Inner: " + item.InnerText + "\r\nAttribute: "  +item.GetAttributeValue("href", null) + "\r\n\r\n\r\n\r\n";
        }

من این کد رو برای گرفتن مقادیر سایتی در سی شارپ دسکتاپ استفاده کردم و کار هم داد اما چون توی توی محیط برنامه نویسی METro(ویندوز استور و ویندوزفون) 
فضای نامی System.Xml.XPath وجود نداره کد من توی این دو با مشکل برمیخوره و دو تابع SelectNodes و SelectSingleNode که از این کلاس استفاده میکنند اصلا وجود ندارن.
توی سایت های خارجی هم جستجو کردم گفتن تنها راهش استفاده از Linq هست. من زیاد با Linq کار نکردم واسه همین دقیق نمیدونم چیکار کنم.(توی Linq همدو تابع SelectNodes و SelectSingleNode  برای این مترو وجود نداره)
یک مثال توی سایت ها برای HtmlAgility پیدا کردم:
کد:
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load(url);

var travelList = new List<HtmlNode>();
foreach (var matchingDiv in doc.DocumentNode.DescendantNodes().Where(n=>n.Name == "div" && n.Id == "myTrips"))
{
    travelList.AddRange(matchingDiv.DescendantNodes().Where(n=> n.Name == "li"));
}


ممنون

See your dreams every where  and every time , try to remember your dreams because a man lives with his dreams forever
پاسخ
#2
Note 
سلام برادر
به این سایت سری بزن احتمالا مشکل حل میشه

Selectsinglenode تو linq اینطور میشه:

کد:
HtmlNode parent = document.DocumentNode
                         .Descendants("ul")
                         .FirstOrDefault(o => o.GetAttributeValue("class", "")
                                                  == "songs-list1")
HtmlNodeCollection x = parent.ChildNodes;

آخرین ویرایش: 27-01-2015 ساعت 15:34، توسط Ali Developer
I - YOU = FALSE
استاد ازم میپرسه چند تا وب سرور نام ببر میگم Apache,Lite speed,tomcat
استاد مینویسه: Apache,Light smith,tomcat
استاده داریم؟ :i'm_ok:
پاسخ
ایجاد موضوع جدید   پاسخ به موضوع  

موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Note اصلاح لیست فعالیت براساس روابط اولویتی afsane/68 0 334 15-06-2015 ساعت 10:48
آخرین ارسال: afsane/68
Note کتاب آموزش Parse کردن یک خبر خوان وردپرسی برای ویندوزفون The Arrow 0 980 23-04-2015 ساعت 09:24
آخرین ارسال: The Arrow
Note قابلیت آپدیت برنامه The Arrow 2 694 08-04-2014 ساعت 21:30
آخرین ارسال: The Arrow
Note خواندن مقادیر یک سایت با استفاده از WebRequest در سی شارپ The Arrow 3 752 26-08-2013 ساعت 15:58
آخرین ارسال: Ali Developer
Note خواندن چند خطی از سایت در WebBrowser - سی شارپ The Arrow 3 698 24-06-2013 ساعت 12:02
آخرین ارسال: Daniel
Note سوال : استفاده API های گوگل در جستجو در بقیه سایت - سی شارپ The Arrow 5 966 15-06-2013 ساعت 21:26
آخرین ارسال: The Arrow
Note سایت های مفید برای یادگیری سی شارپ xMAN 1 564 28-02-2013 ساعت 14:26
آخرین ارسال: C0der
Note سورس برنامه مدیریت فایل به زبان سی شارپ SOFTAFZAR 0 595 18-10-2012 ساعت 17:00
آخرین ارسال: SOFTAFZAR

کاربرانِ درحال بازدید از این موضوع:   1 مهمان