Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/27: Рейтинг темы: голосов - 27, средняя оценка - 4.89
 Аватар для Jinfaa
1 / 1 / 0
Регистрация: 05.05.2010
Сообщений: 118

Парсер сайтов

02.07.2010, 18:02. Показов 5806. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. У меня возник вопрос. Делаю парсер, вынимает из сайта то что мне надо это без вопросов... Но проблема в следующем, когда "вырезаю" нужное из сайта сохраняю в отдельный файл html.
Мне нужно отредактировать этот файл и потом только чтобы загрузился с помощью компонента Webbrowser. Я как понял нужно в коде искать нужные позиции и добавлять. Но вот как? Я не пойму... Вот код который я написал.
C++
1
2
3
4
5
6
7
8
9
10
void __fastcall TForm1::FormCreate(TObject *Sender)
{
site="http://site.ru/";
free=IdHTTP1->Get(site);
positionone=free.Pos("<div id=\"projects-list\">");
positiontwo=free.Pos("</div></div></div>");
Memo1->Lines->Add(free.SubString(positionone,positiontwo-positionone));
Memo1->Lines->SaveToFile("C:/test.html");
WebBrowser1->Navigate("C:/test.html");
}
Добавлено через 5 часов 48 минут
Неужто не кто не знает?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.07.2010, 18:02
Ответы с готовыми решениями:

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

Парсер сайтов в 1С
Добрый день! Подскажите пожалуйста книги и темы, видеоуроки для обучения программированию в 1С для разработки парсера сайтов на...

Парсер сайтов
Это правда, что Python - лучше всего подходит для парсинга? Хочеться услышать ответ от настоящих - живых Python - программистов! К примеру...

10
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
03.07.2010, 18:45
Цитата Сообщение от Jinfaa Посмотреть сообщение
C++
1
2
Memo1->Lines->SaveToFile("C:/test.html");
WebBrowser1->Navigate("C:/test.html");
Путь у вас задан явно неправильно. Слеш в обратную сторону.
При передаче пути необходимо использовать двойной слеш (т.к. "\" - управляющий символ):
C++
1
String Path = "C:\\test.html";
Цитата Сообщение от Jinfaa Посмотреть сообщение
Мне нужно отредактировать этот файл и потом только чтобы загрузился с помощью компонента
Судя из того, что вы написали - вы просто делаете обрезку контента ...
А добавлять минимальные HTML-теги тела кто за вас будет?

Минимальная HTML-страница имеет вид:
HTML5
1
2
3
4
5
6
7
8
9
10
<html>
<head>
<title>Test</title>
</head>
 
<body>
Hello World
</body>
 
</html>
Добавляйте своё содержимое между тегами <body>...</body>

Цитата Сообщение от Jinfaa Посмотреть сообщение
Неужто не кто не знает?
Не нужно просто так поднимать тему.
Учтите, что это не служба поддержки и люди не сидят здесь 24 часа в сутки в ожидании ваших вопросов.
1
 Аватар для Jinfaa
1 / 1 / 0
Регистрация: 05.05.2010
Сообщений: 118
03.07.2010, 18:49  [ТС]
Цитата Сообщение от MikeSoft Посмотреть сообщение
Путь у вас задан явно неправильно. Слеш в обратную сторону.
При передаче пути необходимо использовать двойной слеш (т.к. "\" - управляющий символ):
C++
1
String Path = "C:\\test.html";

Судя из того, что вы написали - вы просто делаете обрезку контента ...
А добавлять минимальные HTML-теги тела кто за вас будет?

Минимальная HTML-страница имеет вид:
HTML5
1
2
3
4
5
6
7
8
9
10
<html>
<head>
<title>Test</title>
</head>
 
<body>
Hello World
</body>
 
</html>
Добавляйте своё содержимое между тегами <body>...</body>


Не нужно просто так поднимать тему.
Учтите, что это не служба поддержки и люди не сидят здесь 24 часа в сутки в ожидании ваших вопросов.
С этим разобрался сделал функцию поиска и замены нужных мне символов. А добавкой обошелся тем что выберал последнюю и первую строку и добавлял что нужно.
Но вот браузер открывает почему-то ссылки в своем окне, а мне хотелось чтобы открывались в браузере по умолчанию. И как можно сделать окно прозрачным? И окошко чтобы было снизу справа. А то стандартные настройки либо сверху слева или по центру. Спасибо.
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
03.07.2010, 18:57
Цитата Сообщение от Jinfaa Посмотреть сообщение
а мне хотелось чтобы открывались в браузере по умолчанию.
Если вам нужно воспользоваться системным браузером по-умолчанию - воспользуйтесь функцией ShellExecute и передайте ей имя фашего файла.

C++
1
2
3
4
5
6
7
8
ShellExecute( NULL, // Индекс родительского окна
  "open", // Код операции
  "http://msdn.at.ua" // URL адрес страницы
  "/",
  NULL, // Строка параметров
  NULL, // Путь текущего каталога
  SW_SHOWNORMAL // Режим отображения
);
Цитата Сообщение от Jinfaa Посмотреть сообщение
И как можно сделать окно прозрачным?
Свойство AlphaBlend.

Цитата Сообщение от Jinfaa Посмотреть сообщение
И окошко чтобы было снизу справа. А то стандартные настройки либо сверху слева или по центру.
Измените значения Left, Top.
1
 Аватар для Jinfaa
1 / 1 / 0
Регистрация: 05.05.2010
Сообщений: 118
03.07.2010, 19:06  [ТС]
Не могу не как разобраться окно расположенно по всему положению права. Занимает все пространство. А хотелось бы чтобы просто окно было снизу справа. Со своими размерами
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
03.07.2010, 19:10
Jinfaa, вам азы программирования VCL учить нужно. Советую Архангельского.

Ответ на ваш вопрос:
C++
1
2
3
Form1->Align = alNone;
Form1->Left = Screen->Width - Form1->Width - 60;
Form1->Top = Screen->Height - Form1->Height - 60;
1
 Аватар для Jinfaa
1 / 1 / 0
Регистрация: 05.05.2010
Сообщений: 118
03.07.2010, 23:35  [ТС]
Цитата Сообщение от MikeSoft Посмотреть сообщение
Jinfaa, вам азы программирования VCL учить нужно. Советую Архангельского.

Ответ на ваш вопрос:
C++
1
2
3
Form1->Align = alNone;
Form1->Left = Screen->Width - Form1->Width - 60;
Form1->Top = Screen->Height - Form1->Height - 60;
Да Архангельский есть книжку купил недавно. Прочитал пока все о компонентах. Вот до этого момента видимо не дошел =) спасибо большое!

Добавлено через 4 часа 23 минуты
А как отследить нажатие на ссылку? Т.е. я нажал на ссылке и хочу чтобы она открылась в браузере по умолчанию
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
04.07.2010, 01:10
Цитата Сообщение от Jinfaa Посмотреть сообщение
А как отследить нажатие на ссылку?
Смотря где вы эту ссылку выводите. Чаще всего ссылки выводят на TLabel ... у этого компонента есть событие OnClick. Туда и вписывайте код. Как альтернативу, можно ещё использовать OnMouseUp (можно и OnMouseDown ... но от него не уйдёшь, если ЛКМ ещё зажата, а действие нужно отменить)
1
 Аватар для Jinfaa
1 / 1 / 0
Регистрация: 05.05.2010
Сообщений: 118
04.07.2010, 08:30  [ТС]
Цитата Сообщение от MikeSoft Посмотреть сообщение
Смотря где вы эту ссылку выводите. Чаще всего ссылки выводят на TLabel ... у этого компонента есть событие OnClick. Туда и вписывайте код. Как альтернативу, можно ещё использовать OnMouseUp (можно и OnMouseDown ... но от него не уйдёшь, если ЛКМ ещё зажата, а действие нужно отменить)
Можете пожалуйста привести пример нажатия на ссылку и открытия в новом окне?
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
04.07.2010, 12:44
Jinfaa, событие OnClick я описывать не буду, т.к. там нечего описывать. Вставили код, который я писал выше - и все дела.

А вот как заменить OnClick с помощью OnMouseUp я вам напишу:
C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm1::Label1MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
                    int X, int Y)
{
  if ((Button == mbLeft) &&                   // проверяем, какая была зажата клавиша мышки
      (X >= 0) && (X < Label1->Width) &&      // проверяем, соответствует ли положение
      (Y >= 0) && (Y < Label1->Height)) {     // указателя границам контрола
    ShellExecute(NULL, "open", "http://msdn.at.ua/", NULL, NULL, SW_SHOWNORMAL); // выполняем действие
  }
}
2
 Аватар для Jinfaa
1 / 1 / 0
Регистрация: 05.05.2010
Сообщений: 118
09.07.2010, 18:19  [ТС]
Я хочу вывести все где встречается
C++
1
2
3
positionone=free.Pos("<div id=\"projects-list\">");
positiontwo=free.Pos("</div></div></div>");
Memo1->Lines->Add(free.SubString(positionone,positiontwo-positionone));
данные positionone и positiontwo. У меня free это AnsiString как можно считать все где встречается эти позиции. У меня на сайте их 30. Хочу все записать в мемо. Незнаю как считать до конца ansistring
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.07.2010, 18:19
Помогаю со студенческими работами здесь

Парсер сайтов
Доброй ночи, есть известные свободные (gnu) библиотеки для сабжа? Добавлено через 1 час 0 минут Нашел варианты: 1. libcurl для...

Парсер сразу нескольких сайтов
Нужно спарсить 3 сайта http://www.openmark.ru/shop/CID_9_ALL.html http://intex-online.ru/?s=categories&amp;category=8 ...

Обучаемый парсер сайтов на Delphi?
Обучаемый парсер сайтов на Delphi -- кто-нибудь что-то подобное делал? Смысл задачи: нужно выбирать об'явления по недвижимости с...

Парсер сайтов без графического интерфейса
Доброго времени суток. Я хотел бы написать парсер сайтов при помощи WinAPI. Моя цель - парсить определенную информацию с сайта, но при этом...

Клиент-серверный проект-парсер сайтов
Нужно реализовать клиент-серверный проект, где сервер содержит роботов-парсеров, которые &quot;дёргаются&quot; раз в определённый...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru