asp.net c\#페이지 정보 캡 처 방법 소개
using System;
using System.Net;
namespace ConsoleApplication2
{
public class Program
{
static void Main(string[] args)
{
DateTime prevDateTime = DateTime.MinValue;
for (int i = 0; i < 10; i++)
{
try
{
var url = "http://cnblogs.com";
var request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Method = "Head";
if (i > 0)
{
request.IfModifiedSince = prevDateTime;
}
request.Timeout = 3000;
var response = (HttpWebResponse)request.GetResponse();
var code = response.StatusCode;
// 200, ,
if (code == HttpStatusCode.OK)
{
prevDateTime = Convert.ToDateTime(response.Headers[HttpResponseHeader.Date]);
}
Console.WriteLine(" :{0}", code);
}
catch (WebException ex)
{
if (ex.Response != null)
{
var code = (ex.Response as HttpWebResponse).StatusCode;
Console.WriteLine(" :{0}", code);
}
}
}
}
}
}
2:웹 페이지 인 코딩 의 문 제 는 가끔 우리 가 웹 페이지 를 잡 았 습 니 다.분석 하려 고 할 때 tmd 의 모든 것 이 난 장 판 입 니 다.정말 개 떡 같 습 니 다.예 를 들 어 아래 와 같이html meta 에 charset 라 는 속성 이 있 는 것 을 어렴풋이 기억 할 수 있 습 니 다.그 안에 기 록 된 것 은 인 코딩 방식 입 니 다.또 하나의 요점 은 response.CharacterSet 이라는 속성 에 도 인 코딩 방식 이 기록 되 어 있 습 니 다.다음 에 다시 시도 해 보 겠 습 니 다.아직도 난 장 판이 야.알 이 아파.이번 에는 홈 페이지 에 가서 봐 야 겠 어.도대체 http 머리 정보 에서 무슨 상호작용 을 했 는 지,어떤 브 라 우 저가 정상적으로 표시 되 는 지,파충류 가 기어 오 면 안 돼.http 헤드 정 보 를 보고 드디어 알 게 되 었 습 니 다.브 라 우 저 는 gzip,deflate,sdch 라 는 세 가지 압축 방식 을 분석 할 수 있다 고 말 했 습 니 다.서버 에서 보 낸 것 은 gzip 압축 입 니 다.여기 서 자주 사용 하 는 웹 성능 최적화 도 알 아야 합 니 다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using HtmlAgilityPack;
using System.Text.RegularExpressions;
using System.Net;
using System.IO;
using System.IO.Compression;
namespace ConsoleApplication2
{
public class Program
{
static void Main(string[] args)
{
//var currentUrl = "http://www.mm5mm.com/";
var currentUrl = "http://www.sohu.com/";
var request = WebRequest.Create(currentUrl) as HttpWebRequest;
var response = request.GetResponse() as HttpWebResponse;
var encode = string.Empty;
if (response.CharacterSet == "ISO-8859-1")
encode = "gb2312";
else
encode = response.CharacterSet;
Stream stream;
if (response.ContentEncoding.ToLower() == "gzip")
{
stream = new GZipStream(response.GetResponseStream(), CompressionMode.Decompress);
}
else
{
stream = response.GetResponseStream();
}
var sr = new StreamReader(stream, Encoding.GetEncoding(encode));
var html = sr.ReadToEnd();
}
}
}
3:홈 페이지 분석 은 천신만고 끝 에 홈 페이지 를 받 았 으 니 다음 에 분석 해 야 합 니 다.물론 정칙 적 으로 일치 하 는 것 이 좋 은 방법 입 니 다.작업량 이 비교적 많 기 때문에 업계 에서 도 Html Agility Pack 이라는 분석 도 구 를 선 호 할 수 있 습 니 다.Html 을 XML 로 해석 한 다음 에 XPath 로 지정 한 내용 을 추출 하여 개발 속 도 를 크게 향상 시 킬 수 있 습 니 다.성능 도 나 쁘 지 않 습 니 다.Agility 는 민첩 하 다 는 뜻 이기 때문에 XPath 의 내용 에 대해 서 는 W3Cschool 의 이 두 장의 그림 을 알 아 보면 됩 니 다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using HtmlAgilityPack;
using System.Text.RegularExpressions;
using System.Net;
using System.IO;
using System.IO.Compression;
namespace ConsoleApplication2
{
public class Program
{
static void Main(string[] args)
{
//var currentUrl = "http://www.mm5mm.com/";
var currentUrl = "http://www.sohu.com/";
var request = WebRequest.Create(currentUrl) as HttpWebRequest;
var response = request.GetResponse() as HttpWebResponse;
var encode = string.Empty;
if (response.CharacterSet == "ISO-8859-1")
encode = "gb2312";
else
encode = response.CharacterSet;
Stream stream;
if (response.ContentEncoding.ToLower() == "gzip")
{
stream = new GZipStream(response.GetResponseStream(), CompressionMode.Decompress);
}
else
{
stream = response.GetResponseStream();
}
var sr = new StreamReader(stream, Encoding.GetEncoding(encode));
var html = sr.ReadToEnd();
sr.Close();
HtmlDocument document = new HtmlDocument();
document.LoadHtml(html);
// title
var title = document.DocumentNode.SelectSingleNode("//title").InnerText;
// keywords
var keywords = document.DocumentNode.SelectSingleNode("//meta[@name='Keywords']").Attributes["content"].Value;
}
}
}
자,일 마치 고 자...
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
springMVC 몇 가지 페이지 회전 방식 소결앞에서 Controller의 몇 가지 구성 방식을 이해했습니다. 오늘은 주로 응답 인터페이스가 돌아가는 몇 가지 방식을 쓰겠습니다. 1. 메모의 방식에서 1.1 HttpServletResponse API를 통해 직접...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.