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

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

02.07.2010, 18:02. Показов 5794. Ответов 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
3956 / 1811 / 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
3956 / 1811 / 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
3956 / 1811 / 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
3956 / 1811 / 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
3956 / 1811 / 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
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru