使用HtmlAgilityPack和Json解析網頁

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();
    }

腳本標籤:

<script>
 window.__PRELOADED_STATE__ = {{SOME JSON HERE}}
<script>

模型:

public class Contact
{
    public string DATA_MODEL { get; set; }
    public string companyName { get; set; }
    public string contactName { get; set; }
    public string contactPhone { get; set; }
}

熱門答案

我想你只是忘了用xpath表達式中的'script'標籤替換'a'標籤。我目前無法在代碼中驗證,但您可以使用chrome dev工具通過在搜索窗口中預期並使用它來測試這些工具。

我將其修改為具有腳本標籤,而且它使用chrome dev工具為我工作。這是我在頁面上嘗試的xpath:

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


許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因