Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 Проблема с WebClient  [new]
Alexey30
Member

Откуда:
Сообщений: 139
Приветствую.

Необходимо сделать парсер, который будет отслеживать обновления данных по заданному УРЛ и добавлять их в БД.
Проблема в том, что при скачивании страницы через WebClient выдается одна версия, а при открытии через браузер (даже с отключенным JavaScript и в приватном режиме) - другая.
Через Web-Client загружается версия размером 35КБ, в то время как view-source: в хроме или любом другом браузере - около 2х МБ.
Думал, что может быть дело в заголовках, прописал их, но ничего не получилось - все равно возвращается "короткая" строка.

 public class CustomWebClient : WebClient
    {
        public CustomWebClient() { }
        protected override WebRequest GetWebRequest(Uri address)
        {
            var request = base.GetWebRequest(address) as HttpWebRequest;
            request.UserAgent =
                "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36";
            request.Host = address.Host;
            request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8";
            request.Referer = "https://www.google.ru/";
            request.Headers["Accept-encoding"] = "gzip, deflate";
            request.Headers["Accept-language"] = "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4";
            request.Headers["Upgrade-insecure-requests"] = "1";
            request.Headers["Cookie"] = "__utma=45462011.1937116378.1507035093.1507035093.1507035093.1; __utmb=45462011.2.10.1507035093; __utmc=45462011; __utmz=45462011.1507035093.1.1";
            request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
            request.Timeout = request.ContinueTimeout = request.ReadWriteTimeout = 30000;
            return request;
        }
    }

//src.Url = https://www.kidsreview.ru/msk/catalog/kulturnye-otdykh-i-razvlecheniya/gde-otmetit-detskii-den-rozhdeniya-v-moskve

                using (var wc = new CustomWebClient())
                {
                    wc.Encoding = Encoding.UTF8;
                    var body = wc.DownloadString(src.Url);
                }


В чем еще может быть подвох?

Спасибо.
3 окт 17, 16:31    [20839510]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с WebClient  [new]
ShSerge
Member

Откуда: ʚонɔ dиw
Сообщений: 24668
Alexey30,

Ну да. А что вас смущает? Что размеры разные? Ну, представьте себе картинку большую на странице. Или аякс какой-нибудь.
3 окт 17, 17:39    [20839800]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с WebClient  [new]
Alexey30
Member

Откуда:
Сообщений: 139
ShSerge, нет, я не имею в виду аякс и картинки, я имею в виду исключительно выдаваемый HTML код.
Попробуйте открыть ссылку в браузере - увидите длиннющую страницу и HTML кода на 2 МБ.
При этом он загружается сразу, а не догружается потом аяксом.
3 окт 17, 17:59    [20839893]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с WebClient  [new]
LR
Member

Откуда: 8P8C
Сообщений: 2144
Alexey30,
навскидку попробовал, нормально все загружается, "около 2х МБ"
            var url = "https://www.kidsreview.ru/msk/catalog/kulturnye-otdykh-i-razvlecheniya/gde-otmetit-detskii-den-rozhdeniya-v-moskve";
            string htmlsrc = "";
            using (WebClient wc = new WebClient())
            {
                wc.Encoding = Encoding.UTF8; 
                htmlsrc = wc.DownloadString(url);
            }
3 окт 17, 18:06    [20839939]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с WebClient  [new]
ShSerge
Member

Откуда: ʚонɔ dиw
Сообщений: 24668
LR,

Может, это реклама?
3 окт 17, 18:15    [20839960]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с WebClient  [new]
ShSerge
Member

Откуда: ʚонɔ dиw
Сообщений: 24668
ShSerge
LR,

Может, это реклама?

Нет. Не реклама.
3 окт 17, 18:17    [20839970]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с WebClient  [new]
Alexey30
Member

Откуда:
Сообщений: 139
ShSerge, нет, подгружается через JS, в данном случае это никак не влияет.

Разобрался, это моя ошибка.
Я не сохранял напрямую body и не проверял его длину, а открывал его правой кнопкой в Text Visualizer.
Так как там отсутствовали переносы строки, то визуализатор решил укоротит самую длинную строку (которая и являлась основной частью файла).
Вот тут конкретно видно: https://www.diffchecker.com/S8iIUslc
3 окт 17, 18:20    [20839981]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить