Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 15.12.2017, 15:51   #1
Maxim223
Пользователь
 
Регистрация: 30.09.2013
Сообщений: 12
Репутация: 10
По умолчанию Парсинг - помогите!

Здравствуйте! Подскажите пожалуйста (помогите кодом) как сделать так, чтобы со страницы спарсить список товаров и цен.

Есть такой код:

Код:

<a href="https://www.isolux.ru/shpatlevka-universalnaya-gipsovaya-osnovit-versilk-pg34-g-20-kg.html">Шпатлевка универсальная гипсовая Основит Версилк PG34 G 20 кг</a>
<span class="price-new">от <span class="num">289,00</span> ₽/шт.</span>

<a href="https://www.isolux.ru/shpatlevka-gipsovaya-knauf-fugen-25-kg.html">Шпатлевка гипсовая Кнауф Фуген серая 25 кг</a>
<span class="price-new">от <span class="num">410,00</span> ₽/шт.</span>

В итоге должно получиться (в Memo):

Шпатлевка универсальная гипсовая Основит Версилк PG34 G 20 кг - 289,00

Шпатлевка гипсовая Кнауф Фуген серая 25 кг - 410,00



На странице много таких записей, нужно все спарсить до конца. Заранее благодарю!

Последний раз редактировалось Alex11223; 15.12.2017 в 16:11.
Maxim223 вне форума   Ответить с цитированием
Старый 15.12.2017, 16:12   #2
Sciv
Профессионал
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Адрес: Курган
Сообщений: 3,219
Репутация: 1231
По умолчанию

Maxim223, если я не ошибаюсь, Вам уже давали код парсинга в другой теме (искать лень, извините, но тема была недавно). В чём проблема применить этот код не к одной строчке, а ко всему HTML-коду?
__________________
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума   Ответить с цитированием
Старый 15.12.2017, 16:15   #3
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 17,345
Репутация: 3350

icq: 512-765
skype: alexp.frl
По умолчанию

Взять HTML/XML парсер и использовать XPath, CSS селекторы и т.п.

Желательно перед этим выкинуть Дельфи и взять нормальный язык, где нет проблем с поиском и подключением (см. пакетный менеджер) библиотек.
Alex11223 вне форума   Ответить с цитированием
Старый 15.12.2017, 16:17   #4
Maxim223
Пользователь
 
Регистрация: 30.09.2013
Сообщений: 12
Репутация: 10
По умолчанию

Давали и он отлично работает.. Но во-первых, не знаю как применить построчно (чтоб продолжался поиск), во-вторых, мне же нужно не одно значение, а несколько (товар, цена). Если не сложно - помогите.
Maxim223 вне форума   Ответить с цитированием
Старый 15.12.2017, 16:20   #5
Maxim223
Пользователь
 
Регистрация: 30.09.2013
Сообщений: 12
Репутация: 10
По умолчанию

Цитата:
Сообщение от Sciv Посмотреть сообщение
Maxim223, если я не ошибаюсь, Вам уже давали код парсинга в другой теме (искать лень, извините, но тема была недавно). В чём проблема применить этот код не к одной строчке, а ко всему HTML-коду?
в этом то и проблема..
Maxim223 вне форума   Ответить с цитированием
Старый 15.12.2017, 16:37   #6
Maxim223
Пользователь
 
Регистрация: 30.09.2013
Сообщений: 12
Репутация: 10
По умолчанию

Есть строка

<h4>220 <span class="rubznak">p</span><sup class="text-muted"><!----></sup></h4>

Ищу 220 так:
r.Expression := '<h4>(.*?) <span class="rubznak"';

Но после <h4> в коде очень много чего. Как же тогда найти 220?
Maxim223 вне форума   Ответить с цитированием
Старый 15.12.2017, 17:04   #7
Sciv
Профессионал
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Адрес: Курган
Сообщений: 3,219
Репутация: 1231
По умолчанию

Цитата:
Сообщение от Maxim223 Посмотреть сообщение
Но после <h4> в коде очень много чего. Как же тогда найти 220?

Конкретно в Вашем примере в коде после 220 "много чего" отсутствует. Вам нужно всего лишь выдрать кусок между <h4> и <span> - вот Вам и два якоря, за которые можно зацепиться при поиске.

То есть найти позицию субстроки <h4>, сдвинуть курсор на 4 символа (длина <h4>) и прочитать посимвольно всё, пока не встретится знак "<"
__________________
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума   Ответить с цитированием
Старый 15.12.2017, 17:10   #8
Maxim223
Пользователь
 
Регистрация: 30.09.2013
Сообщений: 12
Репутация: 10
По умолчанию

Цитата:
Сообщение от Sciv Посмотреть сообщение
Конкретно в Вашем примере в коде после 220 "много чего" отсутствует. Вам нужно всего лишь выдрать кусок между <h4> и <span> - вот Вам и два якоря, за которые можно зацепиться при поиске.

То есть найти позицию субстроки <h4>, сдвинуть курсор на 4 символа (длина <h4>) и прочитать посимвольно всё, пока не встретится знак "<"
Да, но до этой строки есть еще много чего под тегом <h4> и это "много чего" не нужно.
Maxim223 вне форума   Ответить с цитированием
Старый 15.12.2017, 17:19   #9
Sciv
Профессионал
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Адрес: Курган
Сообщений: 3,219
Репутация: 1231
По умолчанию

потому что <h4> - это заголовок.
Можно же делать поиск по комбинации в одной строке <h4> и <span>

Или ещё как. Нужно просто определить тот набор символов, который идентифицирует данную строку как содержимое некоей информации, и плясать уже от него и от его положения в строке
__________________
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума   Ответить с цитированием
Старый 15.12.2017, 17:51   #10
Maxim223
Пользователь
 
Регистрация: 30.09.2013
Сообщений: 12
Репутация: 10
По умолчанию

Можно ли как-то использовать "или" в шаблоне? Я ищу:

r.Expression := '.jpg" title="(.*?)"><img src="';

но вместо .jpg может быть .png
Maxim223 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
парсинг jjioiu Работа с сетью в Delphi 7 19.10.2014 23:13
Парсинг PaHaNjkee Общие вопросы Delphi 40 27.03.2014 08:27
Парсинг nefakt Общие вопросы Delphi 4 04.05.2013 15:18
парсинг Pein95 Работа с сетью в Delphi 4 01.12.2011 02:06
Парсинг tigrend PHP 8 02.10.2011 00:09


02:31.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru