使用HtmlAgilityPack和Json解析网页

时间:2018-06-12 02:11:12

标签: c# json web-scraping html-agility-pack

我正在尝试解析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; }
}

1 个答案:

答案 0 :(得分:0)

我想你只是忘了用xpath表达式中的'script'标签替换'a'标签。我目前无法验证代码,但您可以使用chrome dev工具通过在搜索窗口中预期并使用它来测试这些工具。

我将其修改为具有脚本标记,而且它使用chrome dev工具为我工作。这是我在页面上尝试的xpath:

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