HtmlAgilityPackとJsonを使用してWebページを解析する

c# html-agility-pack json web-scraping

質問

私はHotPadsからHTMLを解析しようとしており、スクリプトタグを抽出してその一部をJsonオブジェクトにマップする方法を混乱させています.HTMLAgilityPackを使用すると、サンプルURLがロードされ、タグを探す場所が破損します。私はそれをデシリアライズするつもりです

主な方法

   private static void ParseSite()
    {
        var url = "https://hotpads.com/308-s-9th-dr-ponte-vedra-beach-fl-32082-syw3eh/building";
        var web = new HtmlWeb();
        var doc = web.Load(url);

        var link = doc.DocumentNode.SelectSingleNode("//a[contains(.,'window.__PRELOADED_STATE__')]");

        if (link != null)
        {
            Console.WriteLine(link.InnerText);
        }
        Console.ReadLine();
    }

スクリプトタグ:

   private static void ParseSite()
    {
        var url = "https://hotpads.com/308-s-9th-dr-ponte-vedra-beach-fl-32082-syw3eh/building";
        var web = new HtmlWeb();
        var doc = web.Load(url);

        var link = doc.DocumentNode.SelectSingleNode("//a[contains(.,'window.__PRELOADED_STATE__')]");

        if (link != null)
        {
            Console.WriteLine(link.InnerText);
        }
        Console.ReadLine();
    }

モデル:

   private static void ParseSite()
    {
        var url = "https://hotpads.com/308-s-9th-dr-ponte-vedra-beach-fl-32082-syw3eh/building";
        var web = new HtmlWeb();
        var doc = web.Load(url);

        var link = doc.DocumentNode.SelectSingleNode("//a[contains(.,'window.__PRELOADED_STATE__')]");

        if (link != null)
        {
            Console.WriteLine(link.InnerText);
        }
        Console.ReadLine();
    }

人気のある回答

私はあなたのxpath式で 'a'タグを 'script'タグに置き換えることを忘れてしまったと思います。私は現時点ではコードで確認できませんが、chrome開発ツールを使用して、これらをテストウィンドウで期待して使用することでテストできます。

代わりにscriptタグを持つように修正し、chrome開発ツールを使用して私のために働いた。これは私がページで試したXPathです:

//script[contains(.,'window.__PRELOADED_STATE__')]



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ