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

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

17.03.2012, 23:17. Показов 48264. Ответов 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 Кб, 487 просмотров)
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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru