Tagi na forum.

C# 1456 XML 282
SQL 1192 sieci 268
ASP.NET 785 IIS 262
Windows 726 C++ 255
web 608 Html 218
Visual Studio 515 Information Technology 193
SQL Server 425 MSDN 167

pokaż wszystkie tagi na forum

webresponse zwraca inną stronę

adoss 2011-11-25 01:34:30
0
avatar
 
 

Witam! Pracuję nad robotem do pracy mgr, robot parsuje do bazy dane z allegro.pl oraz dostępnych archiwów allegro: archiwumallegro.pl/ i allegro.archiver.pl. Problem pojawia się przy odczycie strony z portalu archiwumallegro.pl/ gdyż wczytuje stronę zupełnie innego przedmiotu (zdarza się że z rosyjskiej aukcji). w czasie debugowania adres webrequesta i webresponse jest poprawny jednak po wczytaniu streamu okazuje się że zawiera co innego.Ponieważ ja korzystam z biblioteki HtmlAgilityPack (u mnie odczyt streamu wygląda inaczej) podaję kod wczytywania stron na pdst msdnowego przykładu żebyście mogli sprawdzić o co chodzi:

private string StringGetWebPage(String uri)
        {
            const int bufSizeMax = 65536;
            const int bufSizeMin = 8192;
            StringBuilder sb;
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream responseStream = response.GetResponseStream();
                int length = (int)response.ContentLength;
                int bufSize = bufSizeMin;
                if (length > bufSize)
                    bufSize = length > bufSizeMax ? bufSizeMax : length;
                byte[] buf = new byte[bufSize];
                sb = new StringBuilder(bufSize);
                while ((length = responseStream.Read(buf, 0, buf.Length)) != 0)
                    sb.Append(Encoding.UTF8.GetString(buf, 0, length));
            }
            catch (Exception ex)
            {
                sb = new StringBuilder(ex.Message);
            }
            return sb.ToString();
        }

 

uruchamiając fcję dla strony:

StringGetWebPage("http://archiwumallegro.pl/szukaj/?itemid=116553463");

otrzymamy stringa z zupełnie innej strony, tzn strony z domeny archiwumallegro.pl ale dla zupełnie innego przedmiotu, czy ktoś ma pomysł dlaczego i gdzie jest pies pogrzebany??


tagi: C#   Html


nerusek  2011-11-25 06:05:16 #1
2
avatar
 
 

Sprawdziłem korzystając z HtmlAgilityPack i u mnie wygląda, że wszystko jest ok.Mój kod wygląda tak:http://archiwumallegro.pl/szukaj/?itemid=116553463

public

 

 

string DownloadPageByURL(string URL)

        {

           

 

var webGet = newHtmlWeb();

           

 

HtmlDocument document;        

           

 

try

 

            {

                document = webGet.Load(URL);

               

 

return document.DocumentNode.InnerHtml;

            }

           

 

catch

 

            {

               

 

return"Jest problem";

            } 

        }

 

 

Link, który podałeś jako przykład przenosi mnie na stronę ze słuchawkami i tą samą stronę parsuje mi HtmlAgilityPack. Czyli wszystko niby działa tak jak trzeba.Jak coś to pisz ;). Pozdrawiam

     


Edytowano 1 raz. Ostatnio 2011-11-25 06:06:22 przez nerusek.

------------------------
Pomogłem? Wiesz co z tym zrobić ;)

BLOG

adoss  2011-11-26 18:12:35 #2
0
avatar
 
 

Faktycznie za pomocą HtmlWeb() działa prawidłowo. Dzięki serdeczne. Dziwne to jest :) u mnie odczyt strony w htmlagility wygląda mniej więcej tak:

 HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
WebRequest request = WebRequest.Create(URL);
HttpWebResponse response = null;

try
{
response = (HttpWebResponse)request.GetResponse();
Stream str = response.GetResponseStream();
doc.Load(str, Encoding.UTF8);

}
 

I zwraca stronę z zupełnie innej aukcji :) ale nie ma co grzebać skoro jest działające rozwiązanie, dzięki jeszcze raz ;)


Udziel odpowiedzi

avatar
Treść wpisu:

Zaloguj się lub Zarejestruj się aby wykonać tę czynność.

Idź na górę strony