使用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合法吗? 是的,了解原因