63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
1

Парсинг

30.11.2018, 21:01. Показов 4369. Ответов 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
7784 / 6553 / 2982
Регистрация: 14.04.2014
Сообщений: 28,615
30.11.2018, 21:29 2
Что конкретно тебе надо? "Текст" можно обычным поиском подстроки найти.
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
30.11.2018, 21:42  [ТС] 3
nmcf, самый простой пример это курс валют,тоесть при заходе на сайт какого-либо банка там всегда есть курс валют на одной и той же позиции,если я правильно понимаю то я должен программе говорить в каком месте она должна искать. Так вот ,если к примеру курс доллара больше 70 рублей то допустим она выводит какое-то сообщение,а елси меньше она записывает в текстовый файл значение курса. (Это просто пример)
0
7784 / 6553 / 2982
Регистрация: 14.04.2014
Сообщений: 28,615
30.11.2018, 21:54 4
Ну используй regex, например.
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
30.11.2018, 21:56  [ТС] 5
nmcf, не совсем понимаю как
0
7784 / 6553 / 2982
Регистрация: 14.04.2014
Сообщений: 28,615
30.11.2018, 23:21 6
Ну изучаешь html-код твоей страницы, находишь этот курс и смотришь, за что можно зацепиться там - теги и прочее. И на основе этого составляешь регулярное выражение.
Либо нужно привлекать средства разбора html.
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
02.12.2018, 03:05  [ТС] 7
nmcf, насколько я понимаю regex работает уже с готовым текстом, а как мне скачать html страницу в текстовый файл, или может в переменную типа String?
0
7784 / 6553 / 2982
Регистрация: 14.04.2014
Сообщений: 28,615
02.12.2018, 08:39 8
Qt, curl, WinAPI.
0
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
02.12.2018, 08:53 9
Цитата Сообщение от ReYalp Посмотреть сообщение
Пытался погуглить какие-то статьи либо видео на тему парсинга но почти ничего толкового не нашел,кто-то может подсказать с чего нужно начать?
Гугли на тему "автомат с магазинной памятью" и контекстно-свободные грамматики.

Добавлено через 4 минуты
Цитата Сообщение от ReYalp Посмотреть сообщение
насколько я понимаю regex работает уже с готовым текстом
регулярные грамматики для парсинга HTML не годятся - регекспы не способны обрабатывать вложенные скобки (в данном случае многократно вложенные теги типа div-ов ). Для этого нужны контекстно-свободные грамматики под парсинг которыми HTML/XML и проектировался.
0
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
02.12.2018, 09:08 10
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
регулярные грамматики для парсинга HTML не годятся - регекспы не способны обрабатывать вложенные скобки (в данном случае многократно вложенные теги типа div-ов ).
Какие к Ктулху вложенные скобки? Скорее всего за уши хватит чего-то вроде "<span class="cost popover_link" data-type-currency="USD">(.*?)<".
0
61 / 50 / 12
Регистрация: 25.01.2010
Сообщений: 255
02.12.2018, 09:29 11
Цитата Сообщение от ReYalp Посмотреть сообщение
а как мне скачать html страницу в текстовый файл, или может в переменную типа String?
Читаем в Memo
C++
1
Memo1->Text = IdHTTP1->Get("адрес сайта");
Сохраняем в файл
C++
1
2
3
TMemoryStream *MS = new TMemoryStream;
IdHTTP1->Get("адрес сайта",  MS);
MS->SaveToFile("html.txt");
Добавлено через 1 минуту
Адрес обязательно должен начинаться с http://.
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
02.12.2018, 15:37  [ТС] 12
samsebe, через консоль это реализовать возможно?
0
61 / 50 / 12
Регистрация: 25.01.2010
Сообщений: 255
02.12.2018, 16:04 13
IdHTTP1 - это компонент билдера, я не учел что тема по с++...
0
317 / 268 / 61
Регистрация: 12.10.2011
Сообщений: 434
02.12.2018, 16:12 14
Цитата Сообщение от ReYalp Посмотреть сообщение
через консоль это реализовать возможно?
https://www.boost.org/doc/libs... index.html
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
02.12.2018, 16:29  [ТС] 15
nmcf, разве нельзя сразу записать страницу в файл или строку как это делается к примеру в C# через webclient?
0
7784 / 6553 / 2982
Регистрация: 14.04.2014
Сообщений: 28,615
02.12.2018, 17:38 16
Я же написал, где такое есть. В Qt, например, QNetworkAccessManager.
0
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
02.12.2018, 17:46 17
Цитата Сообщение от ReYalp Посмотреть сообщение
nmcf, разве нельзя сразу записать страницу в файл или строку как это делается к примеру в C# через webclient?
Стандарт языка вообще не предусматривает средств работы с сетью. Сторонние библиотеки - в зависимости от библиотеки. И вообще, может вам лучше в сторону Перла посмотреть? Он изначально заточен на парсинг текста и работа с сетью там проста как мычание.
Perl
1
2
3
4
use LWP::Simple;
#скачивает заглавную страницу Яндекса и выделяет из нее заголовок
get("https://ya.ru")=~/<title.*?>(.*?)</ or die;
print "title=$1\n";
0
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
02.12.2018, 20:03 18
Цитата Сообщение от nmcf Посмотреть сообщение
Я же написал, где такое есть. В Qt, например, QNetworkAccessManager.
А чем средства API оси не комильфо? К примеру WinHTTP все просто как два пальца об асфальт почти как в билдере и шарпе которые через нее и фурычат. Или та же curl. Или перл с пыхом с сетью ни разу не через curl работают?
0
5981 / 1990 / 323
Регистрация: 10.12.2013
Сообщений: 6,854
02.12.2018, 20:12 19
Курсы валют приличные сайты отдают в формате xml.
0
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
02.12.2018, 20:13 20
volodin661, То давно неприличные. Приличные в json и через веб-сокет.
0
02.12.2018, 20:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.12.2018, 20:13
Помогаю со студенческими работами здесь

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

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

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

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


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

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

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