WebResponse의 HtmlDocument.LoadHtml?

.net c# html html-agility-pack httpwebrequest

문제

내가 게시 된 링크에서 이미지를 추출하려고하면 첫 번째 확인은 링크가 다음과 같은 일반 이미지에 있는지 확인하는 것입니다.

    HttpWebRequest request;
    WebResponse webresponse;

    request = (HttpWebRequest)HttpWebRequest.Create(url);

     webresponse = request.GetResponse();
     if (webresponse.ContentType.StartsWith("image/"))
       ...

이것이 발견되지 않으면 나는 HTML Agility Pack을 계속 사용하고 싶지만 다음과 같이 실행해야한다.

HtmlDocument doc;
reader = new StreamReader(webresponse.GetResponseStream());
doc.LoadHtml(reader.ReadToEnd());

문제는 응답에 HTML 코드가 있음에도 불구하고 LoadHtml이 소스를 찾지 못한다는 것입니다. HTML 형식이 올바른 형식이 아닌 것 같습니다.

다음은 ReadToEnd가 생성 할 부분입니다.

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="sv" lang="sv">
    <head><title>
        X - Eclipse - 2011
    </title>

        <!--[if lt IE 7]>
        <script defer type="text/javascript" src="../javascript/pngfix.js"></script>
        <![endif]-->
        <!--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-->

        <meta http-equiv="Content-type" content="text/html; charset=iso-8859-1" /><link href="../../../App_Themes/X/mainStyleSheet.css" type="text/css" rel="stylesheet" /><meta name="author" content="" /><meta name="copyright" content="X.net" /><meta name="description" content="Välkommen in till ett av Sveriges största Xcommunity." /><meta name="keywords" content="X, rollspel, boardgamegeek, boardgame, X.net, X.net, community, Jimmy, Nilsson, schack, risk, puerto rico" /><script language="javascript" type="text/javascript" src="/sites/X/javascript/common.js"></script><script language="javascript" type="text/javascript" src="/sites/X/javascript/ajaxHandler.js"></script><script language="javascript" type="text/javascript" src="/javascript/jquery.js"></script><link rel="shortcut icon" href="/App_Themes/X/Images/common/browserIcon/favicon.ico" /><link rel="icon" href="/App_Themes/X/Images/common/browserIcon/animated_favicon1.gif" type="image/gif" /></head>
    <body>
        <div id="topBack">
        <div id="siteContainer">
        <form method="post" action="game.aspx?gameId=72125" id="aspnetForm" enctype="multipart/form-data">

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDw....

그 문제가있는 경우 문자열에 줄 바꿈 (\ r \ n) 명령이 포함되어 있음을 알 수 있습니까?

내 목표는 웹 페이지를 한 번 이상 다운로드하지 않는 것이 간단하고, 그렇지 않으면 WebClient.DownloadString(url); 사용할 수 있습니다 WebClient.DownloadString(url); 내가 아는 형식으로 다운로드 할 수 있습니다.

수락 된 답변

이것은 효과가 있었다 :

request = (HttpWebRequest)HttpWebRequest.Create(url);
webresponse = (HttpWebResponse)request.GetResponse();
if (webresponse.ContentType.StartsWith("image/"))
{...}
if (webresponse.ContentType.StartsWith("text/html"))
{
     var resultStream = webresponse.GetResponseStream();
     doc.Load(resultStream);
}


Related

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