asp.net c\#페이지 정보 캡 처 방법 소개

6630 단어 붙잡다페이지
1.홈 페이지 업 데 이 트 는 일반 홈 페이지 의 정보 가 계속 새 로 워 지 는 것 을 알 고 있 습 니 다.이것 은 우리 에 게 정기 적 으로 이런 새로운 정 보 를 잡 으 라 고 요구 합 니 다.그러나 이'정기'는 어떻게 이해 해 야 합 니까?즉,이 페이지 를 얼마나 자주 잡 아야 합 니까?사실은 이 정기,즉 페이지 의 저장 시간 을 늦 추 는 것 입 니 다.페이지 의 캐 시 시간 내 에 우 리 는 이 페이지 를 다시 잡 을 필요 가 없습니다.오히려 남 의 서버 에 스트레스 를 주 고예 를 들 어 제 가 블 로그 원 의 첫 페이지 를 잡 으 려 면 먼저 페이지 캐 시 를 비 워 야 합 니 다.Last-Modified 에서 Expires 까지 블 로그 원 의 캐 시 시간 은 2 분 이 고 현재 서버 시간 Date 도 볼 수 있 습 니 다.만약 에 제 가 페이지 를 다시 새로 고치 면 여기 Date 는 다음 그림 에서 If-Modified-Since 가 되 어 서버 에 보 냅 니 다.브 라 우 저의 캐 시가 만 료 되 었 는 지 판단 합 니까?마지막 으로 서버 에서 If-Modified-Since>=Last-Modified 를 발견 한 시간 에 서버 도 304 로 돌 아 왔 습 니 다.그런데 이 쿠키 정보 가 정말 많 네요.실제 개발 에서 사이트 캐 시 전략 을 알 고 있 는 상황 에서 우 리 는 파충류 2min 을 한 번 오 르 게 할 수 있 었 으 면 좋 겠 습 니 다.물론 이것들 은 데이터 팀 이 설정 하고 유지 할 수 있 습 니 다.자,다음은 파충류 로 모 의 하 겠 습 니 다.

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;
}
}
}
자,일 마치 고 자...

좋은 웹페이지 즐겨찾기