Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Web Crawler / 25 сообщений из 34, страница 1 из 2
05.02.2007, 16:34:15
    #34307055
ShadowSmile
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web Crawler
Всем привет. Помогите решить проблемку:

Задача - написать своего рода многопоточный серверный crawler или парсер с веб интерфейсом и высокой производительностью. Т.е. пользователь добавляет некие данные через веб интерфейс а система начинает лазить по сети и искать нужную информацию попутно занося результаты в БД.
Проблемы - я новичек в ява и никогда не занимался разработкой такого софта :-)
т.ч. подскажите где и что, пожалуйста.

Система должна состаять из некого сервиса\даемона,веб интерфейса,и базы данных.
В даемоне посути крутится цикл который проверяет поступили ли новые данные для обработки, если да то смотрит не достигнуто ли придельное кол-во потоков если всё ок создает новый поток если нет уходит опять в спячку... Я правильно размышляю? Дальше поток конектится к хосту качает инфу парсит и резалты возвращает даемону. Даемон заносит всё в БД.

1)На базе чего лучше реализовать коннект по http? Что бы быстро и отказоустойчиво. Библиотеки? Jakarta?
2)Есть ли готовые библиотеки для контроля потоков? Когда их один-два всё просто а когда 1000?
3)Быстрая бд?
4)Как реализовать daemon\сервис? Разработка и первоначальное преминение будет на винде, а потом перенесено на linux...
5)Как реализовывать веб интерфейс, на базе каких технологий? Как передавать данные от интерфейса к даемону - заносить в бд?


Заранее спасибо за ответы, извиняюсь если где-то глупость сморозил. =)
...
Рейтинг: 0 / 0
05.02.2007, 16:44:43
    #34307085
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web Crawler
оповещать демона имхо логично через JMS. интерфейс - обычные сервлеты под Tomcat. в качестве БД берите Mysql - хватит вполне.

демон будет представлять обычное Java приложение. При запуске встает в очередь слушателей JMS. Также демон должен хранить пул crawl-еров.

сервлет при очередной порции данных для парсинга отправляет в очередь сообщение.

демон отлавливает сообщение, берет очередной crawl и запускает его. если свободных crawl-ов нет, то кладет сообщение в очередь.

crawl-ер парсит страницы и обновляет БД.
...
Рейтинг: 0 / 0
05.02.2007, 18:19:40
    #34307437
ShadowSmile
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web Crawler
Сейчас пытаюсь разобраться c JMS, а вот на счет mysql сомнения гложат, не уверен я в его производительности мягко говоря... Может ошибаюсь?
...
Рейтинг: 0 / 0
05.02.2007, 18:29:56
    #34307461
raidan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web Crawler
ShadowSmileСейчас пытаюсь разобраться c JMS, а вот на счет mysql сомнения гложат, не уверен я в его производительности мягко говоря... Может ошибаюсь?
А вы что именно будете сохранять своим crawler'ом? Все страницы целиком? Или специальным образом проиндексированные данные? Или хотите переложить текстовую индексацию на плечи СУБД?
...
Рейтинг: 0 / 0
05.02.2007, 18:38:54
    #34307472
ShadowSmile
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web Crawler
raidan
А вы что именно будете сохранять своим crawler'ом? Все страницы целиком? Или специальным образом проиндексированные данные? Или хотите переложить текстовую индексацию на плечи СУБД?
Нет не страницы целиком, а отфильтрованную информацию например все ссылки на странице.
...
Рейтинг: 0 / 0
05.02.2007, 18:48:55
    #34307495
raidan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web Crawler
ShadowSmile
Нет не страницы целиком, а отфильтрованную информацию например все ссылки на странице.
Попробуйте рассчитать средний объем страницы, скорость вашего интернет-соединения, среднее количество ссылок на странице и сопоставить всё это со скоростью, которую обеспечивает MySQL при выполнении нужным вам действий одновременно (т.е. несколько вставок или несколько вставок и несколько выборок одновременно) — таким образом вы можете примерно представить, что является тормозящим фактором — либо MySQL (не позволяет так быстро вставлять в него отфильтрованную информацию), либо crawler'ы, которые не могут загрузить работой СУБД.
...
Рейтинг: 0 / 0
05.02.2007, 21:08:53
    #34307715
ShadowSmile
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web Crawler
А какие еще есть варианты кроме JMS?

raidan
Спасибо, попробую.
...
Рейтинг: 0 / 0
19.02.2007, 17:34:01
    #34341918
NadinaN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web Crawler
Кроме JMS можно использовать сокеты. Есть клиентская прога и демон, демон находится в режиме ожидания, объект класса ServerSocket в этом поможет, клиент посылает сокет, содержащий запрос, демон запускает crawl для этого запроса в отдельном потоке.
...
Рейтинг: 0 / 0
20.02.2007, 20:23:46
    #34345232
A. Fig Lee
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web Crawler
На самом деле быстро делать нельзя.
После каждого запроса к вебсайту надо делать интервал секунд 5. По 2м причинам:
1) перегружаете сайт
2) на приличных сайтах ето будет обнаружено и Вам отрубят доступ.

Так что mysql должен справится.
Проще правда все было бы на скриптах заделать..
...
Рейтинг: 0 / 0
21.02.2007, 14:31:02
    #34347171
Better
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web Crawler
A. Fig Lee: На самом деле 5 секунд не помогут, если с той стороны есть DoS guardian.

Автору: Вполне возможно Вам прийдется столкнуться еще с одной проблемой, которая тут нигде не упомянута - с зацикливанием crawler'а - и тупое сохранение всех пройденных урлов еще не решает проблему.
...
Рейтинг: 0 / 0
21.02.2007, 17:33:32
    #34347994
stdio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web Crawler
BetterA. Fig Lee: На самом деле 5 секунд не помогут, если с той стороны есть DoS guardian.

Автору: Вполне возможно Вам прийдется столкнуться еще с одной проблемой, которая тут нигде не упомянута - с зацикливанием crawler'а - и тупое сохранение всех пройденных урлов еще не решает проблему.да, один симлинк много крови может попортить :-)
...
Рейтинг: 0 / 0
21.02.2007, 18:26:01
    #34348213
A. Fig Lee
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web Crawler
BetterA. Fig Lee: На самом деле 5 секунд не помогут, если с той стороны есть DoS guardian.

Автору: Вполне возможно Вам прийдется столкнуться еще с одной проблемой, которая тут нигде не упомянута - с зацикливанием crawler'а - и тупое сохранение всех пройденных урлов еще не решает проблему.

Почему не поможет? 5 сек - ето не денайал оф сервис.
...
Рейтинг: 0 / 0
23.02.2007, 14:44:59
    #34351990
Better
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web Crawler
2 stdio:
Было такое: педжинейшн на сайте был криво реализован - уводил в бесконечность - ну или по крайней мере до Integer.MAX_VALUE урлов.. :)

2 A. Fig Lee:
Потому что 1 запрос в пять секунд на протяжении достаточно долгого времени может быть расценен как нарушение netiquette'а. Кому-то пофиг, у кого-то с этим жестко. Проверено.
Кроме того Вы много не на crawl ите делая паузу между запросами 5 секунд - конечно, зависит от задачи.
...
Рейтинг: 0 / 0
23.02.2007, 15:18:35
    #34352033
andrushok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web Crawler
ShadowSmileСейчас пытаюсь разобраться c JMS, а вот на счет mysql сомнения гложат, не уверен я в его производительности мягко говоря... Может ошибаюсь?
Правильно гложат. Рассмотрите PostgreSQL. Она лучше для вашей задачки.
...
Рейтинг: 0 / 0
23.02.2007, 15:32:10
    #34352059
raidforweb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web Crawler
andrushok ShadowSmileСейчас пытаюсь разобраться c JMS, а вот на счет mysql сомнения гложат, не уверен я в его производительности мягко говоря... Может ошибаюсь?
Правильно гложат. Рассмотрите PostgreSQL. Она лучше для вашей задачки.
А аргументировать? В плане производительности для данной задачи.
...
Рейтинг: 0 / 0
24.02.2007, 09:19:41
    #34352616
ArmenA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web Crawler
А это подарок .
...
Рейтинг: 0 / 0
24.02.2007, 09:20:28
    #34352617
ArmenA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web Crawler
gift
...
Рейтинг: 0 / 0
25.02.2007, 17:14:47
    #34353543
maddcast
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web Crawler
Никак в толк не возьму, почему бы не использовать nutch?
...
Рейтинг: 0 / 0
26.02.2007, 18:50:28
    #34355927
A. Fig Lee
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web Crawler
Better2 stdio:
Было такое: педжинейшн на сайте был криво реализован - уводил в бесконечность - ну или по крайней мере до Integer.MAX_VALUE урлов.. :)

2 A. Fig Lee:
Потому что 1 запрос в пять секунд на протяжении достаточно долгого времени может быть расценен как нарушение netiquette'а. Кому-то пофиг, у кого-то с этим жестко. Проверено.
Кроме того Вы много не на crawl ите делая паузу между запросами 5 секунд - конечно, зависит от задачи.

Ето только на мелких, мало популярных сайтах может быть.
Иначе слишком много инфо для анализа надо держать. Держать всю инфо за 5 сек по запросам на яху например - захлебнутся в инфо можно.
Не производительно.
...
Рейтинг: 0 / 0
28.02.2007, 22:51:13
    #34362006
ShadowSmile
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web Crawler
На счет dos я думаю в моём случае это не актуально т.к. краулер довольно грамотно стучится на сайты и в итоге получается максимум 2-3 запроса на сайт, что не особо на атаку смахивает =) У меня просто ситуация несколько иная много сайтов и соответственно потоков, а контента с них тянуть на пару запросов.
Пока стоит mysql после серии тестов уже будет понятно справляется она или нет.
Пока реализовал сам краулер и его внутренние алгоритмы, работу с бд и внешним интерфейсом вынес в отдельные класы так что при необходимости лекго перепишу. Управление думаю реализовать в итоге через php и сокеты... хотя еще до конца не ясно. Больно уж не хочется мне заморачиваться с j2ee, я с этими технологиями незнаком, а учить там до чертиков.

ArmenAА это подарок .
Спасибо за подарок, парочку методов уже прихватил =)
...
Рейтинг: 0 / 0
01.03.2007, 15:04:25
    #34363884
Better
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web Crawler
A. Fig Lee Better2 stdio:
Было такое: педжинейшн на сайте был криво реализован - уводил в бесконечность - ну или по крайней мере до Integer.MAX_VALUE урлов.. :)

2 A. Fig Lee:
Потому что 1 запрос в пять секунд на протяжении достаточно долгого времени может быть расценен как нарушение netiquette'а. Кому-то пофиг, у кого-то с этим жестко. Проверено.
Кроме того Вы много не на crawl ите делая паузу между запросами 5 секунд - конечно, зависит от задачи.

Ето только на мелких, мало популярных сайтах может быть.
Иначе слишком много инфо для анализа надо держать. Держать всю инфо за 5 сек по запросам на яху например - захлебнутся в инфо можно.
Не производительно.

Вы это с такой уверенностью говорите, что я даже начинаю верить в эту чушь! Google, видимо, как раз один из таких мелких, мало популярных сайтов ? См. аттач.
...
Рейтинг: 0 / 0
01.03.2007, 17:54:47
    #34364636
A. Fig Lee
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web Crawler
Better A. Fig Lee Better2 stdio:
Было такое: педжинейшн на сайте был криво реализован - уводил в бесконечность - ну или по крайней мере до Integer.MAX_VALUE урлов.. :)

2 A. Fig Lee:
Потому что 1 запрос в пять секунд на протяжении достаточно долгого времени может быть расценен как нарушение netiquette'а. Кому-то пофиг, у кого-то с этим жестко. Проверено.
Кроме того Вы много не на crawl ите делая паузу между запросами 5 секунд - конечно, зависит от задачи.

Ето только на мелких, мало популярных сайтах может быть.
Иначе слишком много инфо для анализа надо держать. Держать всю инфо за 5 сек по запросам на яху например - захлебнутся в инфо можно.
Не производительно.

Вы это с такой уверенностью говорите, что я даже начинаю верить в эту чушь! Google, видимо, как раз один из таких мелких, мало популярных сайтов ? См. аттач.

Ну смотрю. Какой интервал был?
...
Рейтинг: 0 / 0
07.03.2007, 02:32:41
    #34376183
ShadowSmile
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web Crawler
Всем привет, возник еще вопросик: мне нужно ограничивать размер страницы например до 100кб, но если я это делаю появляются дикие тормоза из-за переконвертации возможно ли как-нибуть решить эту проблему? Тормозящий код закоментирован.

Заранее спасибо.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
    private  String getSiteBody(URL url)
    {


        String res = "";
      
        HttpClient client =  new  HttpClient();
        client.getHostConfiguration().setHost(url.getHost(), url.getPort(), url.getProtocol());       
        client.getParams().setParameter("http.useragent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1) Gecko/20061003 Firefox/2.0");
        GetMethod get =  new  GetMethod(url.getPath());
        get.setQueryString(url.getQuery());
        client.getHttpConnectionManager().getParams().setConnectionTimeout( 20000 );

         try 
        {

             if  (client.executeMethod(get) ==  200 )
            {

                BufferedReader in =  new  BufferedReader( new  InputStreamReader(get.getResponseBodyAsStream()));

                String line = in.readLine();
                StringBuilder sb =  new  StringBuilder();

                 while  (line !=  null )
                {
                    sb.append(line);
                    sb.append("\n");

               /*     if (sb.toString().getBytes() > 100000)
                    {
                        System.out.println("Break coz of size limit:"+url);
                        return "";
                    }*/
                    line = in.readLine();
                }
                res = sb.toString();
              
            }

        }  catch  (IOException e)
        {
            e.printStackTrace();
        }  finally 
        {

            get.releaseConnection();
        }

         return  res;
    }

...
Рейтинг: 0 / 0
07.03.2007, 18:22:32
    #34378351
A. Fig Lee
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web Crawler
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
StringBuilder sb =  new  StringBuilder();
                 int  ln_size = line.length();
                 while  (line !=  null  && ln_size <  100000 )
                {
                    sb.append(line);
                    sb.append("\n");

                    line = in.readLine();
                    ln_size += line.length();
                }
                res = sb.toString();
...
Рейтинг: 0 / 0
08.03.2007, 00:22:39
    #34378726
ShadowSmile
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web Crawler
A. Fig Lee Спасибо, что-то я стормозил =)


Еще вопросик =)

Подвисают потоки, в самом конце из 100 остаётся ~25-30 потоков которые явно не стучатся в сеть... Я предпологаю что может подвисает стрим где-то в середине сайта, а httpclient ждет бесконечно данных... Может такое быть? или я не там ищу... Есть идеи как с этим бороться и вычислять пробему?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Web Crawler / 25 сообщений из 34, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]