HTML 민첩성 유틸리티를 사용하여 URL의 제목, 이미지 및 설명을 추출하는 방법

asp.net c# html-agility-pack webforms

문제

HTML 익명 유틸리티를 사용하여 URL에서 제목, 설명 및 이미지를 추출하고 싶습니다. 지금까지 이해하기 쉽고 도움이 될 수있는 예제를 찾을 수 없습니다.

일부 사람들이 예제를 통해 내가 제목을 추출하고, 설명을 제공하고, 이미지 시리즈에서 이미지를 선택할 수있는 사용자 선택권을 주도록 도와 주시면 감사하겠습니다. (링크를 공유 할 때 Facebook과 비슷한 점도 있습니다.)

업데이트 :

제목, desc 및 단추, .aspx 페이지에 텍스트 상자 & i 단추 코드 이벤트에 대한 코드를 다음과 같은 위치에 레이블이 있습니다. 그러나 모든 값에 대해 널을 리턴합니다. 내가 뭔가 잘못하고있을 수 있습니다.

다음 샘플 URL을 사용했습니다 .http : //edition.cnn.com/2012/10/31/world/asia/india/index.html? hpt = hp_t2

protected void btnGetURLDetails_Click(object sender, EventArgs e)
{
    HtmlDocument doc = new HtmlDocument();
    var response = txtURL.Text;
    doc.LoadHtml(response);

    String title = (from x in doc.DocumentNode.Descendants()
                    where x.Name.ToLower() == "title"
                    select x.InnerText).FirstOrDefault();

    String desc = (from x in doc.DocumentNode.Descendants()
                   where x.Name.ToLower() == "description"
                   select x.InnerText).FirstOrDefault();

    List<String> imgs = (from x in doc.DocumentNode.Descendants()
                         where x.Name.ToLower() == "img"
                         select x.Attributes["src"].Value).ToList<String>();

    lblTitle.Text = title;
    lblDescription.Text = desc;
}

위의 코드는 모든 변수에 대해 null 값을 가져옵니다.

이 코드를 수정하면

HtmlDocument doc = new HtmlDocument();
        var url = txtURL.Text;

        var webGet = new HtmlWeb();
         doc = webGet.Load(url);

이 경우에는 제목 및 설명에 대한 가치 만 다시 얻습니다.

수락 된 답변

protected void btnGetURLDetails_Click(object sender, EventArgs e)
{
    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(new Uri(txtURL.Text));
    request.Method = WebRequestMethods.Http.Get;

    HttpWebResponse response = (HttpWebResponse)request.GetResponse();

    StreamReader reader = new StreamReader(response.GetResponseStream());

    String responseString = reader.ReadToEnd();

    response.Close();

    HtmlDocument doc = new HtmlDocument();
    doc.LoadHtml(responseString);

    String title = (from x in doc.DocumentNode.Descendants()
                where x.Name.ToLower() == "title"
                select x.InnerText).FirstOrDefault();

    String desc = (from x in doc.DocumentNode.Descendants()
               where x.Name.ToLower() == "meta"
               && x.Attributes["name"] != null
               && x.Attributes["name"].Value.ToLower() == "description"
               select x.Attributes["content"].Value).FirstOrDefault();

    List<String> imgs = (from x in doc.DocumentNode.Descendants()
                     where x.Name.ToLower() == "img"
                     select x.Attributes["src"].Value).ToList<String>();

   lblTitle.Text = title;
   lblDescription.Text = desc;

}



Related

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