Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
alvin3
0 / 0 / 0
Регистрация: 13.07.2018
Сообщений: 5
1

Парсирование веб-сайта

14.07.2018, 10:49. Просмотров 802. Ответов 10
Метки нет (Все метки)

Доброго времени суток!

В с# пока новичок.
Пытаюсь спарсировать сайт https://rumara.ru

Парсирование меню у меня проблем не вызвало, а вот товары и страницы спарсировать не могу. Если даже посмотреть загрузку страницы визуально, через браузер https://rumara.ru/women/platya/
То видно что страница загружается сначала пустая, а потом (отрабатывает скрипт????) и появляются товары.

Страницу читаю вот таким способом:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
public string GET(string website, CookieContainer cookieCont1, Encoding Coder)
        {
            string html = "";
            try
            {
 
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(website));
                //ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
                request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0";// "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko";//"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/17.0";
                request.Method = "GET";
                //request.ContentType = "application/x-www-form-urlencoded";
                //request.AllowAutoRedirect = true;
                request.KeepAlive = false;//true; // Нужно ли устанавливать постоянное подключение
                request.Referer = website;
                request.Host = new Uri(website).Host; // Указываем Host 
                request.CookieContainer = cookieCont1;
                //request.AllowAutoRedirect = true;
                //request.Timeout = 10000;
                                
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                if (response.StatusCode == HttpStatusCode.OK)
                {
                    html = new StreamReader(response.GetResponseStream(), Coder).ReadToEnd(); //Кодировка страницы UTF-8
                    request.Abort();
                    request = null;
                }
                response.Close();
            }
            catch (ArgumentException e)
            {
                Console.WriteLine("\n The second HttpWebRequest object has raised an Argument Exception as 'Connection' Property is set to 'Close'");
                Console.WriteLine("\n{0}", e.Message);
            }
            catch (WebException e)
            {
                Console.WriteLine("WebException raised!");
                Console.WriteLine("\n{0}", e.Message);
                Console.WriteLine("\n{0}", e.Status);
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception raised!");
                Console.WriteLine("Source :{0} ", e.Source);
                Console.WriteLine("Message :{0} ", e.Message);
            }
            return html;
        }
В результате получаю html-код странички по этой ссылке, но без каталога товаров.
Прошу совета опытных гуру, укажите куда копать?
Может посоветуете инструменты, которыми можно "снифеть" запросы которые отправляет браузер и ответы, которые он получает?

Заранее большое спасибо!
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2018, 10:49
Ответы с готовыми решениями:

Работа с текстом веб-сайта
Здравствуйте! Как Вы поняли из названия, мне нужна помощь с работой с текстом...

Распарсить дату из веб-сайта
Здравствуйте! Нужен метод, который будет обращаться к сервису "Даты-Время"...

Как организовать экспертную систему по выбору веб сайта (программа тестирования)
Доброго времени суток, на предмете розроботка программного обеспечания, задали...

Нужно написать веб приложения на С#, которые ищут веб страницы содержащие ключевое слово
Нужно написать веб приложения на С#, которые ищут веб страницы содержащие...

Влияние времени отклика утилиты ping от веб-сервера на позицию веб-сайта в поисковой выдаче
Добрый вечер! Подскажите, пожалуйста, в каких поисковых системах время ping...

10
freeba
Неадекват
1269 / 1067 / 204
Регистрация: 02.04.2010
Сообщений: 2,456
Записей в блоге: 2
Завершенные тесты: 2
14.07.2018, 18:31 2
Обычно в качестве сниффера используют Fiddler, но в данном случае и он не нужен. В хроме жмем f12 и смотрим какие запросы шлет страничка, через пару минут обнаруживаются POST запросы вида https://rumara.ru/index.php?route=ex...ro/getproducts в теле которых и передается куча фильтрующих параметров. Вот этот запрос и надо парсить, а не урл сайта.
1
alvin3
0 / 0 / 0
Регистрация: 13.07.2018
Сообщений: 5
14.07.2018, 21:42  [ТС] 3
freeba, возможно на форуме уже есть подсказки как работать с пост запросом?
0
freeba
Неадекват
1269 / 1067 / 204
Регистрация: 02.04.2010
Сообщений: 2,456
Записей в блоге: 2
Завершенные тесты: 2
15.07.2018, 00:03 4
alvin3, конечно есть, во всех подробностях.
0
Avazart
Эксперт С++
7737 / 5647 / 550
Регистрация: 10.12.2010
Сообщений: 25,495
Записей в блоге: 17
15.07.2018, 00:26 5
Забудь про запросы POST и GET для сайтов которые активно используют js и подгружают контент динамически ибо это довольно сложно и ненадежно.
Для этих случаев проще использовать браузеры : встроенные компоненты или (лучше) через Selenium.
0
alvin3
0 / 0 / 0
Регистрация: 13.07.2018
Сообщений: 5
15.07.2018, 07:05  [ТС] 6
freeba, Avazart, а Awesomium может подойти для решения этого вопроса? В данный момент разбираюсь с ним.
0
Avazart
Эксперт С++
7737 / 5647 / 550
Регистрация: 10.12.2010
Сообщений: 25,495
Записей в блоге: 17
15.07.2018, 10:30 7
Да может.
1
alvin3
0 / 0 / 0
Регистрация: 13.07.2018
Сообщений: 5
15.07.2018, 22:19  [ТС] 8
freeba, ума не приложу как с этим работать.. данные которые получаются пост запросом, вида:

HTML5
1
{"result_html":"\t\t            <div class=\"products-layout\">\n                <div class=\"products-grid\">\n                    <div class=\"products-thumbnail\">\n                        \n        <div class=\"image\">\n                \n                            <a href=\"https:\/\/rumara.ru\/men\/aksessuary-muzhskie\/aksessuarnyj-kejs-knockwood-neff-brown-myaso\"><img class=\"lazyload\" src=\"https:\/\/rumara.ru\/image\/cache\/data\/brands\/myaso\/10365-255x390.jpg\" alt=\"10365\" title=\"\u0410\u043a\u0441\u0435\u0441\u0441\u0443\u0430\u0440\u043d\u044b\u0439 \u043a\u0435\u0439\u0441 Knockwood - Neff\" width=\"256\"><\/a>\n                        <\/div>\n                    <\/div>\n                    <div class=\"products-caption\">\n                        <p class=\"products-caption__title\">\n                            <a href=\"https:\/\/rumara.ru\/men\/aksessuary-muzhskie\/aksessuarnyj-kejs-knockwood-neff-brown-myaso\">\n                                \u0410\u043a\u0441\u0435\u0441\u0441\u0443\u0430\u0440\u043d\u044b\u0439 \u043a\u0435\u0439\u0441 Knockwood - Neff                            <\/a>\n                        <\/p>\n                                                    <p class=\"price products-caption__price\">\n                                                                    <span class=\"prod-number\">342<\/span><span class=\"prod-currency\"> \u0440\u0443\u0431.<\/span>                                \n                            <\/p>\n                                            <\/div>\n                <\/div>\n            <\/div>\n\t\t            <div class=\"products-layout\">\n                <div class=\"products-grid\">\n                    <div class=\"products-thumbnail\">\n                        \n        <div class=\"image\">\n                \n                            <a href=\"https:\/\/rumara.ru\/men\/aksessuary-muzhskie\/aksessuarnyj-kejs-knockwood-neff-black-myaso\"><img class=\"lazyload\" src=\"https:\/\/rumara.ru\/image\/cache\/data\/brands\/myaso\/10364-255x390.jpg\" alt=\"10364\" title=\"\u0410\u043a\u0441\u0435\u0441\u0441\u0443\u0430\u0440\u043d\u044b\u0439 \u043a\u0435\u0439\u0441 Knockwood - Neff\" width=\"256\"><\/a>\n                        <\/div>\n                    <\/div>\n                    <div class=\"products-caption\">\n                        <p class=\"products-caption__title\">\n                            <a href=\"https:\/\/rumara.ru\/men\/aksessuary-muzhskie\/aksessuarnyj-kejs-knockwood-neff-black-myaso\">\n                                \u0410\u043a\u0441\u0435\u0441\u0441\u0443\u0430\u0440\u043d\u044b\u0439 \u043a\u0435\u0439\u0441 Knockwood - Neff                            <\/a>\n                        <\/p>\n                                                    <p class=\"price products-caption__price\">\n                                                                    <span class=\"prod-number\">342<\/span><span class=\"prod-currency\"> \u0440\u0443\u0431.<\/span>                                \n                            <\/p>\n                                            <\/div>\n                <\/div>\n            <\/div>\n\t\t            <div class=\"products-layout\">\n                <div class=\"products-grid\">\n                    <div class=\"products-thumbnail\">\n                        \n        <div class=\"image\">\n                \n                            <a href=\"https:\/\/rumara.ru\/men\/aksessuary-muzhskie\/aksessuarnyj-kejs-punch-pennal-stripes-myaso\"><img class=\"lazyload\" src=\"https:\/\/rumara.ru\/image\/cache\/data\/brands\/myaso\/11520-255x390.jpg\" alt=\"11520\" title=\"\u0410\u043a\u0441\u0435\u0441\u0441\u0443\u0430\u0440\u043d\u044b\u0439 \u043a\u0435\u0439\u0441 Punch - Pennal\" width=\"256\"><\/a>\n                        <\/div>\n                    <\/div>\n                    <div class=\"products-caption\">\n                        <p class=\"products-caption__title\">\n                            <a href=\"https:\/\/rumara.ru\/men\/aksessuary-muzhskie\/aksessuarnyj-kejs-punch-pennal-stripes-myaso\">\n                                \u0410\u043a\u0441\u0435\u0441\u0441\u0443\u0430\u0440\u043d\u044b\u0439 \u043a\u0435\u0439\u0441 Punch - Pennal                            <\/a>\n                        <\/p>\n                                                    <p class=\"price products-caption__price\">\n                                                                    <span class=\"prod-number\">128<\/span><span class=\"prod-currency\"> \u0440\u0443\u0431.<\/span>                                \n                            <\/p>\n                                            <\/div>\n                <\/div>\n            <\/div>\n\t\t            <div class=\"products-layout\">\n                <div class=\"products-grid\">\n                    <div class=\"products-thumbnail\">\n                        \n        <div class=\"image\">\n                \n                            {}}
0
freeba
Неадекват
1269 / 1067 / 204
Регистрация: 02.04.2010
Сообщений: 2,456
Записей в блоге: 2
Завершенные тесты: 2
15.07.2018, 23:57 9
Лучший ответ Сообщение было отмечено alvin3 как решение

Решение

Думаю так все вопросы отпадут.
1
Вложения
Тип файла: 7z ConsoleApp1.7z (4.41 Мб, 3 просмотров)
alvin3
0 / 0 / 0
Регистрация: 13.07.2018
Сообщений: 5
16.07.2018, 12:27  [ТС] 10
freeba, спасибо большое
0
BadMan1994
Заблокирован
16.07.2018, 17:14 11
советую использовать Selenium для парсинга динамически загужаемых данных
1
16.07.2018, 17:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2018, 17:14

Влияние географического положения веб-сервера на позицию веб-сайта в выдаче поисковой системы Яндекс
Добрый вечер! Влияет ли географическая удалённость веб-сервера или dns...

Парсирование файла
Столкнулся с такой проблемой, надо перенести часть данных из разных баз в одну,...

парсирование поисковика
раньше парсировал гугл к примеру вот таким методом $question=&quot;искомое...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru