Разбор веб-страницы с использованием HtmlAgilityPack и Json - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь разобрать HTML-код с Hotpads и не совсем понимаю, как извлечь тег скрипта и отобразить его часть в объект 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 голосов
/ 15 июня 2018

Я думаю, вы просто забыли заменить тег 'a' на тег 'script' в своем выражении xpath.В настоящее время я не могу проверить в коде, но вы можете использовать инструменты разработки Chrome, чтобы протестировать их, перейдя в ожидание и используя его в окне поиска.

Я изменил его, чтобы вместо него использовать тег script, и он работалдля меня, используя инструменты Chrome Dev.Это xpath, который я пробовал на странице:

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