Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/239: Рейтинг темы: голосов - 239, средняя оценка - 4.56
-27 / 0 / 1
Регистрация: 17.03.2012
Сообщений: 72

Как парсить страницы сайтов

17.03.2012, 23:17. Показов 48470. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Научите парсить какой нибудь кусочек сайта...а то я кучу мануалов перелазил... и не чего нужного
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.03.2012, 23:17
Ответы с готовыми решениями:

Как парсить страницы с вебсокетами
Добрый день! Есть ресурс https://ru.tradingview.com/chart/?symbol=UKOILмне нужно спарсить цену посл.сделки по Brent. Страницы...

Как парсить html страницы?
к примеру текст "Просто текст" из html кода преобразовать в qlabel

Как парсить фрейм веб-страницы
Господа, есть один фрейм: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <link...

17
 Аватар для БогДелфей
474 / 337 / 36
Регистрация: 31.05.2011
Сообщений: 1,164
18.03.2012, 00:07
pos, posex, copy
чо имено те надо спарсить то?
0
106 / 82 / 15
Регистрация: 07.06.2011
Сообщений: 588
Записей в блоге: 2
18.03.2012, 00:16
Рассмотрим конкретный пример с загрузкой веб-страницы и получения ее html-кода. Создадим новый проект. Нанесем на форму Memo1 (туда загрузим код веб-страницы), компонент IdHTTP1 с вкладки Indy Clients и кнопку. Опишем следующее действие кнопки:
Delphi
1
2
3
4
5
6
7
procedure TForm1.Button1Click(Sender: TObject);
var url, page : string;
begin
url:='http://www.yandex.ru';
page:=IdHTTP1.get(url);  //скачиваем код страницы
Memo1.text:=page;
end;
Дальше делаешь с текстом все что хочешь, парсишь и находишь что тебе нужно.
1
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
18.03.2012, 03:06
Цитата Сообщение от alexan0308 Посмотреть сообщение
Рассмотрим конкретный пример с загрузкой веб-страницы и получения ее html-кода. Создадим новый проект. Нанесем на форму Memo1 (туда загрузим код веб-страницы), компонент IdHTTP1 с вкладки Indy Clients и кнопку. Опишем следующее действие кнопки:
Delphi
1
2
3
4
5
6
7
procedure TForm1.Button1Click(Sender: TObject);
var url, page : string;
begin
url:='http://www.yandex.ru';
page:=IdHTTP1.get(url);  //скачиваем код страницы
Memo1.text:=page;
end;
Дальше делаешь с текстом все что хочешь, парсишь и находишь что тебе нужно.
предпочтительнее парсить сайты не тупым копированием и вырезанием, а действительно структурой, например DOM-моделью, исходя оттуда, откуда пишут сайты, намного быстрее и намного точнее
вчера парсил таким методом 8515 ссылок , парсил справочник, задача можно сказать не легкая, столько нужной инфы вытянуть, но оказалась на 10 строк парсило около 4 часов эти 8515 ссылок, вырезало именно то, что нужно, я остался доволен. Перед этим я писал программу парса справочника, там код был в пару сотен строк, но писал я ее очень долго, 3 дня, и все равно было не учтено все.

так как со мной поделились информацией, которая привела меня в довольное состояние - поделюсь и я
http://www.w3schools.com/htmldom/default.asp
даны примеры на ява скрипте, но тоже самое проделывает и обычный дельфовский ТWebBrowser

так же, ко всему этому можно освоить регулярные выражения, займет на изучение 1-5 часов(в зависимости от соображаловки), я лично потратил 2 часа, но потом работа становится намного обоюдной

вот что за информацию я использовал, это сайт с ознакомлением, справочник и Online редактор

http://phpclub.ru/detail/article/regexp_1
http://javascript.ru/basic/regular-expression
http://regexpr.ru/

примерно изучив вот это, можно спокойно парсить то, что некоторым даже не под силу!!!
Удобно, просто, быстро

удачи
3
106 / 82 / 15
Регистрация: 07.06.2011
Сообщений: 588
Записей в блоге: 2
18.03.2012, 10:46
Цитата Сообщение от Arcor Посмотреть сообщение
предпочтительнее парсить сайты не тупым копированием и вырезанием
Наверно, но для начинающих сойдет... Получаешь текст страницы, а потом
Цитата Сообщение от БогДелфей Посмотреть сообщение
pos, posex, copy
Лично у меня регулярные выражения вызывают только головную боль.... =)
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
18.03.2012, 11:01
чем я буду
Цитата Сообщение от БогДелфей Посмотреть сообщение
pos, posex, copy
вот этим заниматься, я лучше даже скажем регулярным выражением сделаю, так как это приносит такую боль головную мне, что просто ужасть какая-то. Особенно когда начинаешь разбивать текст на слова отдельные, регулярным выражением можно это осуществить 3 строчками.

Цитата Сообщение от alexan0308 Посмотреть сообщение
Наверно, но для начинающих сойдет...
а вот это не правильно наверно, нужно сразу привыкать к чему-то более разумному, чтобы потом переучиваться не было так трудно

Добавлено через 1 минуту
Цитата Сообщение от Cresis Посмотреть сообщение
Научите парсить какой нибудь кусочек сайта...а то я кучу мануалов перелазил... и не чего нужного
давай пример сайта, сейчас посидим подумаем
0
106 / 82 / 15
Регистрация: 07.06.2011
Сообщений: 588
Записей в блоге: 2
18.03.2012, 11:09
Цитата Сообщение от Arcor Посмотреть сообщение
нужно сразу привыкать к чему-то более разумному, чтобы потом переучиваться не было так трудно
Ты прав. Только ты сам на чем парсил, на Delphi или javascript? Насколько мне известно, в D7 нет стандартной библиотеки для использования регулярных выражений. В старших версиях есть? Или ты использовал стороннюю библиотеку (если вообще делал на Delphi)?
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
18.03.2012, 11:20
Цитата Сообщение от alexan0308 Посмотреть сообщение
Ты прав. Только ты сам на чем парсил, на Delphi или javascript? Насколько мне известно, в D7 нет стандартной библиотеки для использования регулярных выражений. В старших версиях есть? Или ты использовал стороннюю библиотеку (если вообще делал на Delphi)?
я кроме как на дельфи, больше не на чем так не могу программировать
парсил я конечно в дельфи, но смотрел справочник по ява скрипту какие там методы и как использовать

регулярное выражение - качается библиотека с офф сайта производителя этой библиотеки
то что парсил на днях - через компонент WebBrowser
0
 Аватар для Vengr
7 / 7 / 1
Регистрация: 10.05.2009
Сообщений: 56
18.03.2012, 11:28
Привет! Можно парсить регексами, но по опыту скажу, что лучше найти готовую длл. Например в C# .NET я использовал сборку AgilityPack. По моему, видел, когда ее искал, решения и для делфи..
0
106 / 82 / 15
Регистрация: 07.06.2011
Сообщений: 588
Записей в блоге: 2
18.03.2012, 11:44
Туманишь что то...
Цитата Сообщение от Arcor Посмотреть сообщение
я кроме как на дельфи, больше не на чем так не могу программировать

Не по теме:

А я знал?



Цитата Сообщение от Arcor Посмотреть сообщение
регулярное выражение - качается библиотека с офф сайта производителя этой библиотеки
Дык, почему сразу не объяснил для Cresis, что стандартным набором дельфи не обойдется. При использовании сторонних библиотек наверно надо об этом упомянуть.

Цитата Сообщение от Arcor Посмотреть сообщение
то что парсил на днях - через компонент WebBrowser
А он не затратит лишнее время на отображение страницы? Это может оказаться существенным при парсинге "8515 ссылок"? Или я не прав, я то думал что он всего лишь отображает страницу...
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
18.03.2012, 12:08
Лучший ответ Сообщение было отмечено как решение

Решение

вот давай примером покажу

давайте отпарсим статистику нашего форума, для этого переходим на самую главную страницу этого сайта и листаем страницу вниз, итак нашли этот раздел? я на картинке выделил его. Теперь выделяем мышкой приблизительно это место, и смотрим исходный код выделенного фрагмента, ищем за что можно зацепиться, за теги, классы или другую какую информацию. Данный фрагмент не буду приводить сюда, думаю сами его увидите.

Дальше заходим в дельфи, бросаем 2 кнопки на форму, мемо и веббраузер
и начинаем программировать , особо тут и программировать то нечего
я зацепился за тег tbody и Id collapseobj_forumhome_stats в этом теге
располагая уже только этими данными
я получаю полностью все что мне нужно

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm1.Button1Click(Sender: TObject);
var Doc, El: Variant;
    i: Integer;
begin
  Doc := WebBrowser1.OleObject.Document.GetElementsByTagName('tbody'); // вот зацепляемся за тег
  for i := 0 to Doc.Length - 1 do // ищем все что связано с этим тегом
    begin
      El := Doc.Item(i); // получаем элементы этого тега
        if El.Id = 'collapseobj_forumhome_stats' then // и вот тут вот сравниваем за вышесказанный id
                                                      // если в таком теге и с таким id что-то найдено
        Memo1.Lines.Add(El.InnerText) // то вывести это в мемо как текст, а не как код html
                                      // за это отвечает InnerText, если нужно было бы кодом - то можно было бы написать InnerHTML
    end;
end;
и тут я отдельной кнопкой сам сайт гружу

Delphi
1
2
3
4
procedure TForm1.Button2Click(Sender: TObject);
begin
  WebBrowser1.Navigate('https://www.cyberforum.ru/');
end;
ниже прикрепил картинку на которой показано что я хочу вырезать, и сама программа, если у кого не получится самого

сверестественного я тут ничего не использовал как вы видите, пользовался только справочником, который выше давал
Миниатюры
Как парсить страницы сайтов  
Вложения
Тип файла: 7z парс.7z (542.2 Кб, 494 просмотров)
9
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
18.03.2012, 12:17
Цитата Сообщение от alexan0308 Посмотреть сообщение
А он не затратит лишнее время на отображение страницы
а скачивание страницы не затратит ли лишнее время?
Цитата Сообщение от alexan0308 Посмотреть сообщение
Это может оказаться существенным при парсинге "8515 ссылок"
я же и говорю работало оно около 4 часов, однако это быстро еще писал программу минут 15-20 всего лишь!
1
106 / 82 / 15
Регистрация: 07.06.2011
Сообщений: 588
Записей в блоге: 2
18.03.2012, 12:33
Ну чисто логически, идшттп только загружает код страницы, а веббраузер получает код страницы и отображает. Ладно, спасибо.
0
 Аватар для Alex_pac
1302 / 708 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
18.03.2012, 13:00
Модуль jsWebbrowser позволяет легко и просто использовать JavaScript страницы через стандартный компонент TWebbrowser

http://jqbook.narod.ru/delphi_js.html

тема с примером парсинга. таблицы одного сайта.

как подключить интернет таблицу Delphi
2
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
18.03.2012, 13:03
из моего примера, заменив 9 строку в сравнении на collapseobj_forumhome_birthdays, получим всех, кто сегодня празднуют дни рождения
0
 Аватар для Alex_pac
1302 / 708 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
18.03.2012, 13:16
вот давай примером покажу
тоже самое с выше указанным модулем.

Delphi
1
2
3
4
5
6
7
8
9
procedure TForm1.Button1Click(Sender: TObject);
begin
  memo1.Text:=WebBrowser1.getElementById('tbody','collapseobj_forumhome_stats').innerText;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  WebBrowser1.Navigate('https://www.cyberforum.ru/');
end;
Вложения
Тип файла: zip парс.zip (431.2 Кб, 401 просмотров)
3
-27 / 0 / 1
Регистрация: 17.03.2012
Сообщений: 72
20.05.2012, 19:55  [ТС]
Народ, предположем есть сайт google.ru, как мне вывести одно лиж поле ввода?!

Добавлено через 6 минут
И еще, вариант как нибудь картинки с ссылками спарсить?

Добавлено через 5 минут
Мне нужно не просто текст, а кусочек сайта, и что бы он кликался... в общем что бы все ссылки работали и т.д..
0
 Аватар для selevo
2 / 7 / 6
Регистрация: 13.10.2013
Сообщений: 249
12.10.2017, 00:25
Классно...
Пример в 11 посте
запустил на D7 пришлось править DFM файл,выбросить отсутствующие в D7 методы(свойства)
В итоге всё заработало.
Спасибо!

Теперь вопросы,
1.Как не отобюражать страничку на форме.
2. Как загрузить только текст (без картинок)
3. У меня вылетает ошибка сценариев раз 5,как это отключить ?

Добавлено через 2 минуты
Цитата Сообщение от Alex_pac Посмотреть сообщение
тоже самое с выше указанным модулем.
Alex_pac,

это для какой версии Delphi ?
в D7 не собирается проект
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.10.2017, 00:25
Помогаю со студенческими работами здесь

Есть какой-то способ парсить музыку с сайтов?
Всем привет! Кто-нибудь знает, есть какой-нибудь способ чтобы парсить (скачивать) музыку с сайта? На языке C#, Visual Studio. Есть парсер...

Как сделать, чтобы открывать страницы сайтов, как в браузере
Доброе время суток. Кака сделать чтоб открывать страницы сайтов как в браузере? Создавайте темы в нужном разделе

Node.js может парсить динамические страницы?
Добрый день. Нужно парсить сайт, а на нем страницы подгружаются динамически. При нажатии на кнопку Next (следующая страница) происходит...

При сохранении страницы парсить контент
Всем привет! Не работал с вордпресс, но задачка прилетела. Надо при сохранении страницы в админке парсить контент страницы и его...

Парсить все ссылки по маске с определенного блока страницы
Задача спарсить все ссылки с одного блока по селектору id. После перебрать с помощью регулярных выражений. Если кто-то подкинет примеры...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru