Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
1

Парсинг

30.11.2018, 21:01. Показов 4375. Ответов 64

Author24 — интернет-сервис помощи студентам
Хочу написать программу на С++ которая будет парсить сайт и к примеру в зависимости от текста на сайте она будет что-то делать. До этого не имел дела с парсингом вообще. Пытался погуглить какие-то статьи либо видео на тему парсинга но почти ничего толкового не нашел,кто-то может подсказать с чего нужно начать?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.11.2018, 21:01
Ответы с готовыми решениями:

Парсинг
Всем доброго времени суток. Только начал изучать c++ и нужна помощь. Есть код, нужно сделать...

Парсинг
Привет всем вообщем нужно удачно спарсить данные (gold, money, fuel, lvl, model) вид ответа хоть и...

Парсинг
Привет всем ) Есть небольшая проблема например имеется переменная String t = '<img...

Парсинг строки
Добрый день,подскажите, почему и как исправить у меня commands.c_str() - пустое ? Вот код: ...

64
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
04.12.2018, 01:40 41
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А вот не всем остальном особенно на самих автоматах парсинга на пыхах и т.д. и пальчики в пыль сотрете и проц задымит.
Не, для парсинга возьму какую-нибуть Gumbo или tidy-html5 или еще чего и сохраню свои пальчики в порядке)
0
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
04.12.2018, 01:46 42
Цитата Сообщение от ReYalp Посмотреть сообщение
С чего лучше всего начать когда уже "знаешь базу",когда хочется чего-то больше чем просто игры с созданием переменных
НУ я допустим с графоном сразу после первого курса занялся. Ну в общем за лето с друганом освоили все что было в эту тему на весь второй курс рассчитано а дальше во всю в самонаведение турелей игрались. Помогло сильно при изучении теории автоматического управления на третьем курсе конкретно. Одно дело когда как баран на новые ворота на автоматическое регулирование а совсем другое когда совпадает с тем что уже сам уяснил. Это с одной стороны. С другой когда чему-то одному больше внимания уделяешь то чему то другому естественно меньше потому что нельзя объять необъятное. А что потом понадобится больше неизвестно. К примеру графон графоном а с СУБД знакомство в результате было шапошным. SQL я уже после универа осваивал. Так что по универским временам все средствами фреймверка делал уже на стороне клиента фактически, что по сравнению с SQL запросами на сервер примитивизм.
Так что советовать в этом плане можно разве что что-то фундаментальное. К примеру стоит досканально разобраться как работают смартпоинтеры и почему они заменяют GC и самое главное какие у них недостатки и где их применение уже неудобно в плане архитектуры и как подобные штуки вообще реализовывать. Они вообще как и вся STL как бы инструмент на все мелкие случаи жизни - т.е. годные много для чего вообще но мало для чего лучшие. Смартпоинеры STL как бы искоробочная заплатка полностью заменяющая GC но не сильно превосходящая его по удобству. фактически решает ту же задачи что и GC+слабые ссылки а потому имеет и те же неудобства в плане сложных архитектур. Для многих задач удобнее было бы пользовать двусторонние ссылки, но как бы там такой вагон вариантов что стандартными их сделать не получится. Они нужны именно для подстройки автоматической уборки мусора к реалиям предметной области. Именно за счет этого автомат и получается ручной.
Цитата Сообщение от ReYalp Посмотреть сообщение
С чего лучше всего начать когда уже "знаешь базу"
Еще один очень важный момент - это ООП и умение проектировать архитектуру. Паттерны паттернами а умение построить иерархию удобную для реалий конкретной задачи реалиями конкретной задачи. Ну а тем более что банда четверых далеко не все могла описать а тем более удержавшись в рамках архитектурных ограничений явы.
Вот в этом плане много полезного взял из ознакомления с кодом борландовских фреймверков. Код у них в комплекте идет. Одно неудобство - он на паскале. Поэтому он там и огроменный и то как их идеи на смартпоинтеры (свои а не из stl) переложить и вообще реалиями плюсов решать что получается гораздо меньшим количеством кода делать хотя и с другой но эквивалентной по возможностям архитектурой приходится додумывать самостоятельно
0
nmcf
04.12.2018, 09:29
  #43

Не по теме:

Цитата Сообщение от ReYalp Посмотреть сообщение
А насчет университета я не знаю что сказать ,лично у меня программа построена очень плохо
graphics.h изучаете? :)

0
Fulcrum_013
04.12.2018, 10:37
  #44

Не по теме:

Цитата Сообщение от nmcf Посмотреть сообщение
graphics.h
Хорошая была штука для первого курса. свой первый оконный фреймверк именно на ней лепил. Кстати в winapi/канвасе набор то все тот же.

0
nmcf
04.12.2018, 11:08
  #45

Не по теме:

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Хорошая была штука для первого курса
В каком году?
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
в winapi/канвасе набор то все тот же
Набор чего? Функции рисования линий и эллипсов везде одинаковые, дело не только в этом.

0
Fulcrum_013
04.12.2018, 11:12
  #46

Не по теме:

Цитата Сообщение от nmcf Посмотреть сообщение
В каком году?
в 1995-ом.
Цитата Сообщение от nmcf Посмотреть сообщение
Набор чего? Функции рисования линий и эллипсов везде одинаковые, дело не только в этом.
Все остальное приходящее а набор оный вечен.

0
7793 / 6560 / 2984
Регистрация: 14.04.2014
Сообщений: 28,671
04.12.2018, 13:22 47
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
в 1995-ом.
Ну тогда понятно.
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
04.12.2018, 15:24  [ТС] 48
nmcf, на даный момент изучили указатели и ссылки,ввод и вывод данных с файла(fstream) да и всё,вот всё что мы учим ,на 4 семестре будем вообще С# учить,я же говорю можно выучить за день-два.
0
gng
04.12.2018, 15:58
  #49

Не по теме:

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Во всем другом под капотом работа с сетью сделана именно на плюсах.
Надо же? И конкретика будет? или bla-bla-bla.
Из того, о чем речь шла в этом длинном треде, только у Qt под капотом Плюсы. Другие упоминаемые выше решения: Python, Perl, curl, имеют к Плюсам отношение чуть меньшее, чем никакого. Увы - всё на Сишке :-))

0
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
04.12.2018, 16:05 50
Цитата Сообщение от ReYalp Посмотреть сообщение
но я не знал что в с++ не предусмотрено инструментов для работы с сетью, видимо мне Придётся учить что-то другое
В С++ предусмотрена идеология расширения через библиотеки. Т.е. абсолютно нормально для С++ взять библиотеку из нестандартного набора и использовать ее. Ну или, в некоторых специальных случаях, точно так же нормальным будет написать ее самостоятельно.
0
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
05.12.2018, 00:35 51
Цитата Сообщение от ReYalp Посмотреть сообщение
на даный момент изучили указатели и ссылки,ввод и вывод данных с файла(fstream) да и всё,вот всё что мы учим
Да конечно не фонтан. У нас первый семестр плюсы были, второй паскаль. Т.е. тот объем который вы говорите занял 2 семестра у нас был за 2 лекции максимум. И этого было абсолютно достаточно для тех кто хотел научится. Дальше уже во всю шло применение одного из этих двух языков на выбор к задачам из разных предметных областей. Ну и ознакомление со специализированными для предметных областей языками по ходу пьессы (тогда еще было что не область то язык под нее в последствии вытесненные универсальными).
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
08.12.2018, 02:34  [ТС] 52
nmcf, решил использовать winAPI ,насколько я понял этот способ подходит для скачивания маленьких страниц,а если допустим страница весит 10МБ,что делать в этом случае?
0
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
08.12.2018, 05:43 53
Цитата Сообщение от ReYalp Посмотреть сообщение
насколько я понял этот способ подходит для скачивания маленьких страниц,а если допустим страница весит 10МБ,что делать в этом случае?
WinHTTP использовать. Или стороннюю библиотеку искать
0
7793 / 6560 / 2984
Регистрация: 14.04.2014
Сообщений: 28,671
08.12.2018, 07:02 54
Цитата Сообщение от ReYalp Посмотреть сообщение
этот способ подходит для скачивания маленьких страниц
Это почему? Для любых подходит.
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
08.12.2018, 09:51  [ТС] 55
nmcf, я использую для скачивания три метода InternetOpen, InternetOpenUrl и InrernetReadFile и к примеру когда страница весит 1.5КБ то код скачивается нормально, а когда страница весит уже 10МБ то далеко не весь код скачивается
0
7793 / 6560 / 2984
Регистрация: 14.04.2014
Сообщений: 28,671
08.12.2018, 10:18 56
Ты пример скопировал или переделал что-то? Он считывает любой файл.
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
08.12.2018, 13:29  [ТС] 57
nmcf, Я скопировал вот этот пример :
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
HINTERNET hInternetSession;   
HINTERNET hURL;
char cBuffer[1024];            // I'm only going to access 1K of info.
BOOL bResult;
DWORD dwBytesRead;
 
// Make internet connection.
hInternetSession = InternetOpen(
                  "Microsoft Internet Explorer", // agent
                  INTERNET_OPEN_TYPE_PRECONFIG,  // access
                  NULL, NULL, 0);                // defaults
 
// Make connection to desired page.
hURL = InternetOpenUrl(
         hInternetSession,                       // session handle
         "http://www.acompany.com/welcome.htm",  // URL to access
         NULL, 0, 0, 0);                         // defaults
 
// Read page into memory buffer.
bResult = InternetReadFile(
            hURL,              // handle to URL
            (LPSTR)cBuffer,    // pointer to buffer
            (DWORD)1024,       // size of buffer
            &dwBytesRead); // pointer to var to hold return value
 
// Close down connections.
InternetCloseHandle(hURL);
InternetCloseHandle(hInternetSession);
но понятное дело пытался увеличить размер массива и буфера,результат странный очень получался ,потому что при запуске программы каждый раз раное кол-во знаков скачивается(если говорить про большие страницы).
0
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
08.12.2018, 14:16 58
Цитата Сообщение от ReYalp Посмотреть сообщение
но понятное дело пытался увеличить размер массива и буфера,результат странный очень получался
Ниче что если все это вот так в функцию сунуть то буфер на стеке будет? А стек он не резиновый и для таких дел не предназначен обычно. По дефаулту размер стека 1МБ.
0
7793 / 6560 / 2984
Регистрация: 14.04.2014
Сообщений: 28,671
08.12.2018, 14:35 59
ReYalp, цикл где? Одним вызовом ты не сможешь загрузить файл, тем более не зная его размер.
Если надо сохранять в память, то замени в том примере запись в файл на запись в vector.
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
08.12.2018, 14:51  [ТС] 60
nmcf, Я не до конца разобрался в коде. Получается допустим мы загружаем первые 1024 байта,окей,но как тогда сделать так чтобы программа загружала следующие 1024 байта ?Я понимаю что нужен цикл но я не понимаю какие параметры в нем должны быть,как заранее узнать размер страницы и как сделать так чтобы загрузка начинаналась уже с того места на котором закончилась?
0
08.12.2018, 14:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.12.2018, 14:51
Помогаю со студенческими работами здесь

Парсинг IPv4
Написал функцию для парсинга IPv4. И не соображу как надо переделать условия, что бы if (_it ==...

Парсинг .xls
Не уверен, туда ли я пишу, но т.к. собираюсь реализовывать на C++ - думаю раздел в какой-то мере...

Парсинг xml
При написание парсера возникла проблема, как интерпретировать следующий xml <?xml version="1.0"...

Парсинг html
Здравствуйте, уважаемые форумчане! Я мало знаю на тему парсинга и вот мне нужно вытащить информацию...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru