문제

나는 그것이 가능한 와이지만,어떤 ASP.NET 서버 코드에 대한 좋은 제 상황이 너무입니다.

와이트 페이지를 예를 들어,div,그리고 필터링에 대한 div <title> 태그,하지만 제 생각에 대한 중 페이지를,그것은 좋지 않을 먼저 읽기의 모든 내용과 다음 읽기 타이틀 태그..또 어쩌면 그것은 아주 간단한 솔루션?어쨌든 더 많은 정보를 공유 발견에 대해 아무것도 있는 인터넷에서.감사

도움이 되었습니까?

해결책

CJJER와 BOO 덕분에 Regex에 대해 더 많이 읽었으며 마지막으로 아래 코드가 작동합니다.

Dim qq As New System.Net.WebClient
    Dim theuri As New Uri(TextBox1.Text)
    Dim res As String = qq.DownloadString(theuri)
    Dim re As Regex = New Regex("<title\b[^>]*>(.*?)</title>", RegexOptions.Singleline)
    Dim ma As Match = re.Match(res)


    If Not ma Is Nothing And ma.Success Then
        Response.Write(ma.Groups(1).Value.ToString())
    Else
        Response.Write("error")
    End If

그러나 어쨌든 문제는 여전히 남아 있습니다.이 코드는 전체 페이지를 다운로드하고이를 통해 찾아 내고 있습니다. 하나의 무거운 웹 사이트는 2 ~ 3 개 이상의 Secconds가 완료되기 위해서는 다음과 같은 유일한 방법 인 것 같습니다. | 이 코드를 개선 할 제안이 있습니까?

다른 팁

cjjer 거의 제대로되었습니다.

먼저, Regex를 다음으로 변경하십시오. <title>(?<Content>.*?)?</title>

둘째, 먼저 일치 객체를 만들어야합니다 (URI에 제목이없는 경우를 대비하여).

Match tMatch = new RegEx(@"<title>(?<Content>.*?)?</title>").Match(new System.Net.WebClient().DownloadString(url));

if ((null != tMatch) && (tMatch.IsSuccess)) {
    //  yay.
    title = tMatch.Groups("Content").value;
}

제목은 일반적으로 처음 수백 바이트 내에 나타나므로 첫 1kib 정도에 대한 범위 요청을 시도 할 수 있습니다. (일부 마감 태그가 누락되기 때문에 오류 수정 파서를 사용하여) 구문 분석을 시도 할 수 있습니다. 전체 페이지를로드합니다.

그것은 것 보안 위험을 로드하는 다른 웹 페이지 당신을 위해,제목 읽...당신이해야 할 이와 서버 사이드 스크립트(asp.net,php,...)과 바로 출력을 원하는 웹 페이지입니다.의 일이 어떤 종류의 캐싱하기 때문에 그것은 원활한을 가져 오기에 제목의 모든 요청을 합니다.

외부 페이지 제목을 검색하는 간단한 깨끗한 방법은 없습니다. a를 사용하여 서버 측면을 수행 할 수 있습니다 WebClient 응답을 구문 분석합니다.

그러나 요구 사항을 검토 할 가치가있을 수 있습니다. 실제로 추가 트래픽 및 대기 시간이 생성 될 수있는 정도가 필요합니다. 또한 외부 사이트에서 부하를 생성 할 수 있다고 생각하십시오.

string title=Regex.Match(new System.Net.WebClient().DownloadString(url),(@"<title>(.*?)</title>"))[0].Groups[1].ToString();

시도해보십시오. 확실하지 않습니다.

모든 서버가이를 지원하는지 확실하지 않습니다.
도움이된다면 참조하십시오


char[] data = new char[299];
System.Net.HttpWebRequest wr =(HttpWebRequest)WebRequest.Create("http://www.yahoo.com");
wr.AddRange("bytes", 0, 299);
HttpWebResponse wre = (HttpWebResponse)wr.GetResponse();
StreamReader sr = new StreamReader(wre.GetResponseStream());
sr.Read(data, 0, 299);
Console.WriteLine((data));
sr.Close();

편집 : 일부 네트워크 모니터링 도구로 확인하여 서버가 보낸 텍스트를 찾으십시오. 나는 Fiddler를 사용하여 출력을보고 콘솔에 썼습니다.

edit2 : 제목이 페이지의 시작 부분에 있다고 가정합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top