HtmlAgilityPack 및 Json을 사용하여 웹 페이지를 파싱합니다.

c# html-agility-pack json web-scraping

문제

Hotpads에서 HTML을 구문 분석하려고하는데, 스크립트 태그를 추출하고 Json 객체로 매핑하는 방법에 대해 혼란스러워합니다. HTMLAgilityPack을 사용하여 예제 URL을로드하고 태그를 찾는 위치가 잘못되었습니다. 나는 그것을 deserialize하는 것을 계획한다.

주요 방법

   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 표현식에서 'a'태그를 'script'태그로 바꾸는 것을 잊었다 고 생각합니다. 지금은 코드에서 확인할 수는 없지만 크롬 개발 도구를 사용하여 검색 창에서 기대하고 사용하여이를 테스트 할 수 있습니다.

스크립트 태그를 대신 사용하도록 수정했고 크롬 개발 도구를 사용하여 저에게 도움이되었습니다. 이것은 페이지에서 시도한 xpath입니다.

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


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.