Супер медленный HttpWebRequest - PullRequest
0 голосов
/ 10 марта 2011

Я делаю скребок для сайта для проекта, который я делаю. Я получил все, чтобы работать отлично, однако загрузка реальной страницы занимает F-O-R-E-V-E-R. Вы можете увидеть страницу, которую он загружает здесь: MCServerList.Net

Вот код, который я использую:

private CONST REQUESTURL as string = "http://www.MCServerList.net/?page="
private chunkId as int32 = 1

Dim req As HttpWebRequest = WebRequest.Create(REQUESTURL & chunkId)
Dim res As HttpWebResponse = req.GetResponse()
Dim Stream As Stream = res.GetResponseStream()

Затем я использую «Поток» и загружаю его через бесплатный пакет HTMLAgilityPack. Он загружает страницу быстро, однако первоначальный запрос обычно занимает ~ 20-30 секунд.

Любая помощь будет оценена!

1 Ответ

1 голос
/ 10 марта 2011

Я только что запустил следующий код и, игнорируя первую начальную компиляцию, я в среднем около 3,3 секунды для GetResponse() и еще 0,2 секунды для Load(). Вы на быстром соединении? Вы уверены, что это узкое место?

Option Explicit On
Option Strict On

Imports System.Net

Public Class Form1

    Private Const REQUESTURL As String = "http://www.MCServerList.net/?page="
    Private chunkId As Int32 = 1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim ST As New System.Diagnostics.Stopwatch()
        ST.Start()
        Dim req = WebRequest.Create(REQUESTURL & chunkId)

        Dim res = req.GetResponse()
        Trace.WriteLine(String.Format("GetResponse() : {0}", ST.Elapsed))
        Using Stream As System.IO.Stream = res.GetResponseStream()
            Dim X As New HtmlAgilityPack.HtmlDocument()
            X.Load(Stream)
        End Using
        Trace.WriteLine(String.Format("Load() : {0}", ST.Elapsed))
        ST.Stop()
    End Sub
End Class
...