HTMLAgility Pack을 사용하여 링크 추출

c# html-agility-pack

문제

가장 간단한 코드를 생각해보십시오.

    using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using HtmlAgilityPack;

namespace WebScraper
{
    class Program
    {
        static void Main(string[] args)
        {
            HtmlDocument doc = new HtmlDocument();
            doc.LoadHtml("http://www.google.com");

            foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
            {
            }
        }
    }
}

이것은 효과적으로 전혀 아무것도 할 나던와 같은 다양한 다른 StackOverflow의 질문에서 영감 / 복사 . 이것을 컴파일 할 때 "객체 참조가 객체의 인스턴스로 설정되지 않았습니다."라는 런타임 오류가 있습니다. foreach 라인을 강조 표시합니다.

나는이 겸손하고 무고하며 쓸모없는 코드에 환경이 과민하게 된 이유를 이해할 수 없다.

HTMLAgilityPack이 HTML 클래스를 노드로 받아들이는지 알고 싶습니다.

수락 된 답변

웹에서 html을로드하려면 HtmlWeb 객체를 사용해야합니다.

HtmlWeb web = new HtmlWeb();
HtmlDocument doc =web.Load(url);

인기 답변

LoadHtml 은 실제 HTML 문자열을 인수로 취합니다. 대신 WebResponse.GetResponseStream() 에서 스트림로드를 전달할 수 있습니다.

WebRequest req = WebRequest.Create( "http://www.google.com" );
Stream s = req.GetResponse().GetResponseStream();
doc.Load(s);



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