Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.07.2008, 11:47   #1
antoha.by
Пользователь
 
Регистрация: 29.04.2008
Сообщений: 32
Вопрос Программа для сканирования ссылок на сайте.

Задача такова: Мне нужно написать программу которая могла заходить на какой нибудь сайт, сканировать там ссылки с определенным фильтром (например: сайт http://programmersforum.ru фильтр ссылок: "google.com" ну это просто пример) и причем заходить по тем ссылкам на сайты считывать от туда HTML-код.
Вопрос такой: что мне для этого нужно(учебники, программы)? Каким языком лучше писать?
В программирование я знаю отлично только паскаль, но хочу научиться и другим языкам.

Принцип решения задачи прост:
1. Считать HTML-код с указанного сайта
2. Найти всё что включено в тег <a href= с учетом фильтра
3. Зайти по ссылке на сайт
4. Считать от туда HTML-код(считать можно куда угодно и в файл и на экран)

Последний раз редактировалось antoha.by; 27.07.2008 в 11:57.
antoha.by вне форума Ответить с цитированием
Старый 27.07.2008, 12:51   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Писал что-то подобное на Делфи. Программа сканировала сайт на поиск определенных фраз и сохраняла статистику.
Arigato вне форума Ответить с цитированием
Старый 27.07.2008, 13:07   #3
antoha.by
Пользователь
 
Регистрация: 29.04.2008
Сообщений: 32
По умолчанию

Arigato, Исходник дай пожалуйста!
antoha.by вне форума Ответить с цитированием
Старый 27.07.2008, 13:15   #4
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

Есть готовая dll заточенная под .NET которая как раз решает твою проблему. Писал сам потому стоит денег.
merax вне форума Ответить с цитированием
Старый 27.07.2008, 15:41   #5
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Цитата:
Принцип решения задачи прост:
1. Считать HTML-код с указанного сайта
2. Найти всё что включено в тег <a href= с учетом фильтра
3. Зайти по ссылке на сайт
4. Считать от туда HTML-код(считать можно куда угодно и в файл и на экран)
Да, можно и так. Вот небольшой пример. Функция для скачивания странички. Сохраняем страничку в файл, открываем, ищем например теги "<a href=", сохраняем адреса из них и снова пользуем функцию для закачки
Код:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics,
  Controls, Forms, Dialogs, WinInet;
...

function DownloadFile(const Url: string; filname:string): string;
type
    buf=array[0..1024] of char;
var
   NetHandle: HINTERNET;
   UrlHandle: HINTERNET;
   Buffer: buf;
   BytesRead: cardinal;
   fil:file of buf;
begin  
    Result:='';
    NetHandle:=InternetOpen('Delphi 7.0', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
    if Assigned(NetHandle) then begin
       UrlHandle := InternetOpenUrl(NetHandle, PChar(Url), nil, 0, INTERNET_FLAG_RELOAD, 0);
       if Assigned(UrlHandle) then begin
          assignfile(fil,filname);
          rewrite(fil);
          FillChar(Buffer, SizeOf(Buffer), 0);
          repeat
              result:='save';
              FillChar(Buffer, SizeOf(Buffer), 0);
              AllByte:=AllByte+SizeOf(Buffer);
              InternetReadFile(UrlHandle, @Buffer, SizeOf(Buffer), BytesRead);
              write(fil,Buffer);
          until BytesRead = 0;
          closefile(fil);
          InternetCloseHandle(UrlHandle);
       end else 
          raise Exception.CreateFmt('Нет доступа к %s', [Url]);
    InternetCloseHandle(NetHandle);
    end else
    raise Exception.Create('Unable to initialize Wininet');
end;
eoln вне форума Ответить с цитированием
Старый 27.07.2008, 16:37   #6
antoha.by
Пользователь
 
Регистрация: 29.04.2008
Сообщений: 32
По умолчанию

eoln,
Спасибо!

Последний раз редактировалось antoha.by; 27.07.2008 в 16:43.
antoha.by вне форума Ответить с цитированием
Старый 27.07.2008, 17:58   #7
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Я писал на Делфи 6. Приводить исходник своей проги не вижу смысла, т.к. она решает немного другую задачу и снабжена очень многими совсем не связанными с этой задачей возможностями.
На Делфи 6 есть такой компонент, как TClientSocket, я использовал его.
С его помощью не составит труда скачать нужную страничку. А затем алгоритм тривиален, да ты и сам его привел в первом сообщении.
Единственное, что при считывании придется руками формировать HTTP-запрос. Протокол HTTP хорошо документирован, найти не составит труда.
Arigato вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программа, которая сохраняет веб страницы раз в час на сайте в определённой папке SeregaKo Общие вопросы Delphi 7 24.07.2008 16:10
Где найти компонент для сканирования? Stilet Софт 6 27.05.2008 15:39
Изменение ссылок при вставке Strannik79 Microsoft Office Excel 4 10.09.2007 14:31
Доступ к избранному и добавление ссылок. Inbox Общие вопросы Delphi 5 30.05.2007 17:11