• سوال: مشکل در 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 415 15-06-2015 ساعت 10:48
    آخرین ارسال: afsane/68
    Note کتاب آموزش Parse کردن یک خبر خوان وردپرسی برای ویندوزفون The Arrow 0 1,415 23-04-2015 ساعت 09:24
    آخرین ارسال: The Arrow
    Note قابلیت آپدیت برنامه The Arrow 2 820 08-04-2014 ساعت 21:30
    آخرین ارسال: The Arrow
    Note خواندن مقادیر یک سایت با استفاده از WebRequest در سی شارپ The Arrow 3 1,178 26-08-2013 ساعت 15:58
    آخرین ارسال: Ali Developer
    Note خواندن چند خطی از سایت در WebBrowser - سی شارپ The Arrow 3 1,030 24-06-2013 ساعت 12:02
    آخرین ارسال: Daniel
    Note سوال : استفاده API های گوگل در جستجو در بقیه سایت - سی شارپ The Arrow 5 1,186 15-06-2013 ساعت 21:26
    آخرین ارسال: The Arrow
    Note سایت های مفید برای یادگیری سی شارپ xMAN 1 665 28-02-2013 ساعت 14:26
    آخرین ارسال: C0der
    Note سورس برنامه مدیریت فایل به زبان سی شارپ SOFTAFZAR 0 846 18-10-2012 ساعت 17:00
    آخرین ارسال: SOFTAFZAR

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