Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.51/41: Рейтинг темы: голосов - 41, средняя оценка - 4.51
6 / 6 / 1
Регистрация: 15.09.2013
Сообщений: 149

Поисковый двигатель

19.09.2013, 21:09. Показов 8298. Ответов 68
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет-привет форум \о/ Корни пошли отсюда:

Поиск информации.Реально ли?

Следовательно,я решил написать небольшую поисковую систему(да,да я хочу захватить мир)
Решил создать эту тему, буду писать сюда свой код(решил писать на Java,да.Удобно выложить что то сюда,потом перечитать,исправить,дополнить,если так делать нельзя,пардон).Огромная просьба,подсказывайте мне как его улучшить)

Думаю можно начать,а начать надо с теории,следовательно, разделении работы поисковой системы,а именно:

"Три столпа поисковика"

1)Краулер - программа, являющаяся составной частью поисковой системы и предназначенная для перебора страниц Интернета с целью занесения информации о них в базу данных поисковика.Как подсказывает нам википедия.
(http://ru.wikipedia.org/wiki/Поисковый робот)

Для отдаленных мира сего:Вообщем эта такая программка,которая ползает по сайтам и все их содержимое заносит в базу,в моем случае это будет текст.

2)Индексатор - Программа, которая анализирует тексты,скачанные краулером. То есть, краулер качает всю страницу(и код тоже),а индексатор всю эту шелуху отсеивает,подготавливая чистые,хорошие данные,занося их в базу.

3)Ядро!) сама поисковая система.Тут можно сказать,что это - программа,которая ищет по данным,которые ей подготовил индексатор.Сюда можно отнести и веб интерфейс,то есть сайт,в котором мы будем вбивать слова для поиска.

Все выше сугубо мое понимание,возможно оно и неправильное,если есть ошибки - скажите,только спасибо скажу.

Я думаю нужно начать!)

А начну я с этого:
1)Создать программу(краулер) которая обойдет все сайты в моем районе(думаю,что на весь интернет делать такую весчъ было бы глупо,хотя кто знает,кто знает... на что способна Java) и скачает их исходные тексты.

Но для начала надо определиться,как хранить данные,в базе данных? или просто в файлах,txt,например)

Добавлено через 43 секунды
Пост будет дополняться*

Добавлено через 22 минуты
А начал я с установки замечательной библиотеки - Jsoup.Всем срочно качать!)
Jsoup
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.09.2013, 21:09
Ответы с готовыми решениями:

Поисковый робот
Здравствуйте. Нужно написать робота, только я полный ноль в этой теме. Какая именно задача? Есть текстовый документ, в котором будет...

Двигатель
Народ только познаю джаву, и не могу поправить ошибки, помогите) import java.util.Scanner; class Dvijenie { void On(double...

Экзамен, ООП. Классы двигатель, автомобиль и грузовик
Создать класс двигатель с указанием мощности. Определить конструкторы и метод доступа к данным. Создать класс машин, содержащий класс ...

68
 Аватар для Wolkodav
842 / 480 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
20.09.2013, 17:46
LanGrande, ну если .txt, то придётся писать свой слой, для удобной обработки текстовых файлов( изобретать велосипед), бд вас избавить от таких вещей.
1
6 / 6 / 1
Регистрация: 15.09.2013
Сообщений: 149
20.09.2013, 18:31  [ТС]
Цитата Сообщение от Wolkodav Посмотреть сообщение
бд вас избавить от таких вещей.
Не думаю,что бд тут уместна,все же сначала будет файлов так ... несколько тысяч) а потом эта цифра будет расти и расти.Так что нужно думать.
0
 Аватар для t1m0n
638 / 416 / 27
Регистрация: 03.11.2009
Сообщений: 1,855
20.09.2013, 19:49
а файловая система вас избавит от миллионов файлов?
создайте 1000 файлов в папке и откройте ее, быстро открывается? если файлов миллион?
а базы данных могут разносится на разные серверы

где то были статьи как сделан поиск гугла\яндекса
1
6 / 6 / 1
Регистрация: 15.09.2013
Сообщений: 149
20.09.2013, 19:57  [ТС]
Цитата Сообщение от t1m0n Посмотреть сообщение
где то были статьи как сделан поиск гугла\яндекса
Ну... у них там собственно написанные базы данных и файловые системы,хотя .. не знаю как у яндекса.
0
20.09.2013, 20:07

Не по теме:

Леша? Бабушкин? ты что ли ?

2
6 / 6 / 1
Регистрация: 15.09.2013
Сообщений: 149
20.09.2013, 20:35  [ТС]
Пам парам,небольшая программка краулер версия 1.0)):
Java
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
53
54
55
56
57
58
59
60
61
62
63
64
65
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
 
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
 
public class Crawler {
 
    /**
     * @author LanGrande
     * The Web Crawler
     * 20.09.2013
     */
    public static void main(String[] args) {
 
        Document doc = null;
        StringBuilder sb = new StringBuilder();
        File file = new File("C:\\base\\link.txt");
 
        try {
            BufferedReader in = new BufferedReader(new FileReader(
                    file.getAbsoluteFile()));
            try {
 
                String s;
 
                while ((s = in.readLine()) != null) {
                    sb.append(s);
                    sb.append("\n");
 
                    doc = Jsoup.connect(s).userAgent("Mozilla").get();
 
                    String title = doc.title();
                    System.out.println("\n Название найденных веб страничек: "
                            + title);
 
                    // Document text = Jsoup.parse(file, "UTF-8",s);
                    Elements links = doc.select("a[href]");
                    for (Element link : links) {
                        System.out.println("\n Найденные ссылки на странице - "
                                + title + ": " + link.attr("href"));
                    }
 
                }
 
            } finally {
 
                in.close();
            }
        } catch (FileNotFoundException e1) {
 
            e1.printStackTrace();
        } catch (IOException e) {
 
            e.printStackTrace();
        }
 
    }
 
}
Никакой проверки ссылок пока нет,только их поиск на страничках,которые есть в файле link.txt.

Добавлено через 45 секунд
Комментируем,предлагаем что-то свое,кидаемся тапками)

Добавлено через 6 минут
Госпади....какие же ссылки он находит

Пару примеров:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Найденные ссылки на странице - Поисковые системы, оптимизация и продвижение сайта - SearchEngines.ru: [url]http://searchengines.ru/bitrix/redirect.php?event1=blog&event2=follow&goto=http://feeds.feedburner.com/Seo-blog-ru[/url]
Найденные ссылки на странице - Поисковые системы, оптимизация и продвижение сайта - SearchEngines.ru: #
 
 Найденные ссылки на странице - Поисковые системы, оптимизация и продвижение сайта - SearchEngines.ru: /calendar/sdelat_sayt_effektivnym_instrumentom_privlecheniya_klientov.html
 
 Найденные ссылки на странице - Поисковые системы, оптимизация и продвижение сайта - SearchEngines.ru: #
 
 Найденные ссылки на странице - Поисковые системы, оптимизация и продвижение сайта - SearchEngines.ru: /calendar/ad_tech_london_2013_.html
 
 Найденные ссылки на странице - Поисковые системы, оптимизация и продвижение сайта - SearchEngines.ru: /calendar/russian_affiliate_congress_and.html
 
 Найденные ссылки на странице - Поисковые системы, оптимизация и продвижение сайта - SearchEngines.ru: #
 
 Найденные ссылки на странице - Поисковые системы, оптимизация и продвижение сайта - SearchEngines.ru: /calendar/praktika_internet_marketinga_p.html
 
 Найденные ссылки на странице - Поисковые системы, оптимизация и продвижение сайта - SearchEngines.ru: /calendar/google_vebmasteram_.html
 
 Найденные ссылки на странице - Поисковые системы, оптимизация и продвижение сайта - SearchEngines.ru: #
Добавлено через 1 минуту
Хм, надо регулярками парсить ссылки,думаю,да.Срочно покушать документации надобно)
0
 Аватар для Wolkodav
842 / 480 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
20.09.2013, 21:58
LanGrande, надо бы все по классам сразу разносить, по интерфейсам. Плохо все в main пихать.
1
20.09.2013, 23:54

Не по теме:

Цитата Сообщение от verylazy Посмотреть сообщение

Не по теме:

Леша? Бабушкин? ты что ли ?

спустя два часа после нажатия на эту ссыль, я, читая статью о брилиантовой руке(даже не помню путь, по котрому я забрел туда), едва вылез от туда, предварительно забыв (в процесе чтения) о первоначальной причине посещения ресурса :D

1
20.09.2013, 23:58

Не по теме:

дааа, лурк, он такой :D

0
6 / 6 / 1
Регистрация: 15.09.2013
Сообщений: 149
26.09.2013, 18:27  [ТС]
Все никак не дойду до , собс-но, решения,тестирую систему записи в файл:
Java
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
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
 
public class FileTest {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
 
 
        FileTest.write("testW", "aaa");
 
    }
 
    public static void write(String fileName, String text) {
        // Определяем файл
        File file = new File(fileName);
 
        try {
 
            if (!file.exists()) {
                File directory = new File("C:\\base\\");
                File.createTempFile(fileName, ".txt", directory);
            }
 
            PrintWriter out = new PrintWriter(file.getAbsoluteFile());
 
            try {
 
                out.print(text);
            } finally {
 
                out.close();
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
 
}
Создается файл с именем ,которое я указал в стринг,тока к нему какие то цифры добавляются и запись в файл не идет.

Добавлено через 8 минут
UPD

Java
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
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
 
public class FileTest {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
 
        FileTest.write("testCraw","Ляляляляля");
 
    }
 
    public static void write(String fileName,String text) {
        // Определяем файл
        String Name = "C:\\base\\" + fileName + ".txt";
        File file = new File(Name);
 
        try {
 
            if (!file.exists()) {
                file.createNewFile();
            }
             PrintWriter out = new PrintWriter(file.getAbsoluteFile());
             
                try {
                    //Записываем текст у файл
                    out.print(text);
                } finally {
                    //После чего мы должны закрыть файл
                    //Иначе файл не запишеться
                    out.close();
                }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
 
}
Вот рабочий код,прикручу сейчас к основному коду.

Добавлено через 14 минут
Пам пам пам:
Java
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
 
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
 
public class Crawler {
 
    /**
     * @author LanGrande The Web Crawler 25.09.2013 ver 1.1
     */
    public static void main(String[] args) {
 
        BufferedReader in = null;
        StringBuilder sb = new StringBuilder();
        File file = new File("C:\\base\\link.txt");
        Document doc = null;
 
        try {
            in = new BufferedReader(new FileReader(file.getAbsoluteFile()));
            try {
 
                String s;
 
                while ((s = in.readLine()) != null) {
                    sb.append(s);
                    sb.append("\n");
 
                    doc = Jsoup.connect(s).userAgent("Mozilla").get();
 
                    String title = doc.title();
                    // System.out.println("\n Название найденных веб страничек: "
                    // + title);
 
                    // Document text = Jsoup.parse(file, "UTF-8",s);
                    Elements links = doc.select("a[href]");
                    for (Element link : links) {
                        String linkName = link.attr("href");
                        // System.out.println("\n Найденные ссылки на странице - "
                        // + title + ": " + linkName);// link.attr("href")
 
                        Crawler.write(title, linkName);
 
                    }
 
                }
 
            } finally {
 
                in.close();
            }
        } catch (FileNotFoundException e1) {
 
            e1.printStackTrace();
        } catch (IOException e) {
 
            e.printStackTrace();
        }
 
    }
 
    public static void write(String fileName, String text) {
 
        String Name = "C:\\base\\" + fileName + ".txt";
        File file = new File(Name);
 
        try {
 
            if (!file.exists()) {
                file.createNewFile();
            }
            PrintWriter out = new PrintWriter(file.getAbsoluteFile());
 
            try {
 
                out.print(text);
            } finally {
 
                out.close();
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
 
}
Новая версия краулера,которая.....Не работает Проблема с записью в файлы.

Добавлено через 1 минуту
По сути вот этот код должен работать:
Java
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
 
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
 
public class Crawler2 {
 
    /**
     * @author LanGrande The Web Crawler 25.09.2013 ver 1.1
     */
    public static void main(String[] args) {
 
        BufferedReader in = null;
        StringBuilder sb = new StringBuilder();
        File file = new File("C:\\base\\link.txt");
        Document doc = null;
 
        try {
            in = new BufferedReader(new FileReader(file.getAbsoluteFile()));
            try {
 
                String s;
 
                while ((s = in.readLine()) != null) {
                    sb.append(s);
                    sb.append("\n");
 
                    doc = Jsoup.connect(s).userAgent("Mozilla").get();
 
                    String title = doc.title();
                    // System.out.println("\n Название найденных веб страничек: "
                    // + title);
 
                    // Document text = Jsoup.parse(file, "UTF-8",s);
                    Elements links = doc.select("a[href]");
                    for (Element link : links) {
                        String linkName = link.attr("href");
                        // System.out.println("\n Найденные ссылки на странице - "
                        // + title + ": " + linkName);// link.attr("href")
 
                        String Name = "C:\\base\\" + title + ".txt";
                        File linkF = new File(Name);
 
                        if (!linkF.exists()) {
                            linkF.createNewFile();
                        }
 
                        PrintWriter out = new PrintWriter(
                                linkF.getAbsoluteFile());
 
                        try {
 
                            out.print(linkName);
                        } finally {
 
                            out.close();
                        }
 
                    }
 
                }
 
            } finally {
 
                in.close();
            }
        } catch (FileNotFoundException e1) {
 
            e1.printStackTrace();
        } catch (IOException e) {
 
            e.printStackTrace();
        }
 
    }
 
}
Но,например файл google.txt имеет вот такое содержимое:
Bash
1
/intl/ru/policies/
Добавлено через 10 минут
Оу,запись в цикле же должна....

Добавлено через 7 минут
Хотя.. сейчас вывел тут строки,вроде все норм,но почему записывается одна строка - не знаю.

Добавлено через 21 час 44 минуты
Ошибка,наверняка,пустяковая,но где)
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
27.09.2013, 19:12
блин, как же мне эта тема нравиться
Java
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
53
54
55
56
57
58
59
60
61
62
63
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
 
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
 
public class Crawler2 {
 
    public static void main(String[] args) {
 
        BufferedReader in = null;
        StringBuilder sb = new StringBuilder();
        File file = new File("C:\\base\\link.txt");
        Document doc = null;
 
        try {
            in = new BufferedReader(new FileReader(file));
            try {
 
                String s;
 
                while ((s = in.readLine()) != null) {
                    sb.append(s);
                    sb.append("\n");
 
                    doc = Jsoup.connect(s).userAgent("Mozilla").get();
 
                    String title = doc.title();
 
                    String Name = "C:\\base\\" + title + ".txt";
                    
                    File linkF = new File(Name);
                    FileWriter linkWriter = new FileWriter(linkF);
                    Elements links = doc.select("a[href]");
                    for (Element link : links) {
                        linkWriter.append(link.attr("abs:href") + "\n");
 
                    }
                    linkWriter.close();
 
                }
 
            } finally {
 
                in.close();
            }
        } catch (FileNotFoundException e1) {
 
            e1.printStackTrace();
        } catch (IOException e) {
 
            e.printStackTrace();
        }
 
    }
 
}

Не по теме:

теперь я официально подписан на свежие новости с поля боя :yahoo:



Добавлено через 6 часов 37 минут
немного поигрался, что в итоге получилось
Java
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashSet;
 
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
 
public class Crawler2 {
    private static final String START_LINK = "http://rambler.ru/";
    private static final String DB_LINKS_FILE_NAME = "C:\\base\\link.txt";
    private static final int MAX_LINKS_COUNT = 10000;
    private static HashSet<String> hashSet;
 
    public static void main(String[] args) throws IOException {
        // в этом файле будем хранить нашу базы ссылок
        File file = new File(DB_LINKS_FILE_NAME);
        
        // записываем в файл БД ссылок стартовую ссылку, откуда
        // следует начинать сканирование, после чего файл закрываем (в нем 1 ссылка)
        FileWriter tempForWriteStartUrlToFile = new FileWriter(file);
        //tempForWriteStartUrlToFile.flush();
        tempForWriteStartUrlToFile.append(START_LINK);
        tempForWriteStartUrlToFile.close();
        
        BufferedReader in = new BufferedReader(new FileReader(file));
 
        String s = null;
        int tempLinksCount = 0;
        Document doc = null;
        int count = 1;              // счетчик ссылок в файле + 1 (стартовая)
        int lineNumber = 1;         // счетчик какой номер строки считывать с файла
        hashSet = new HashSet<>();  // используется для фильтрования дублей адресов
 
        while (((s = in.readLine()) != null) && count < MAX_LINKS_COUNT) {
            in.mark(lineNumber);
 
            try {
                doc = Jsoup.connect(s).userAgent("Mozilla").get();
 
                Elements links = doc.select("a[href]");
                FileWriter out = new FileWriter(file, true);
                for (Element link : links) {
                    if (isGoodLink(link.attr("abs:href"))) {
                        out.append("\n" + link.attr("abs:href"));
                        hashSet.add(link.attr("abs:href"));
                        count++;
                    }
                }
                
                System.out.printf("уникальных ссылок сейчас в базе: %d(+%d), ", count, (count - tempLinksCount));
                tempLinksCount = count;
                System.out.printf("посетил адрес #%d %s\n", lineNumber++, s);
                out.close();
            } catch (Exception e) {
                System.out.println("в этом месте что-то пошло не так, но продолжаем...");
            }
        }
 
        System.out.println("done");
 
    }
    
    public static boolean isGoodLink(String str) throws IOException {
        if (str.equals("") || str.contains("?") || str.contains("#") || hashSet.contains(str)) {
            return false;
        }
        return true;
    }
 
}
начну по порядку...
в коде задается лишь стартовая точка сканирования
Java
1
private static final String START_LINK = "http://rambler.ru/";
, "паучек" забегает по этому адресу, вытягивает все ссылки что найдет и добавляет в БД (кроме ссылок пустых, содержащих # и ? (там просто много технических ненужных ссылок попадает в таком случае)) и постепенно посещает все ссылки в файле. Поставил "заглушку"
Java
1
private static final int MAX_LINKS_COUNT = 10000;
на максимальное количество записей УНИКАЛЬНЫХ адресов (проверка через HashSet), а то файл никогда наверное не закончится. Вообщем альфа-вершн для раздумий, может что полезное кто подчерпнет для себя
1
6 / 6 / 1
Регистрация: 15.09.2013
Сообщений: 149
27.09.2013, 19:51  [ТС]
Хм..код рабочий)) дожую потоки,обновлю код,все еще думаю над проверкой ссылок,соб-но

Добавлено через 1 минуту
oO,
/me пошел срочно разбирать этот код.

Добавлено через 11 минут
Ема е,10 тысяч ссылок)точнее 10023.Встречаются и такого вида:
Bash
1
http://www.ovideo.ru/%D0%94%D0%B5%D1%82%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE_%D0%BE_%D1%84%D0%B8%D0%BB%D1%8C%D0%BC%D0%B5_%D0%9C%D0%B0%D0%BB%D0%B0%D0%B2%D0%B8%D1%82%D0%B0
Надо улучшать проверку на вот эти штуки: B5%D1%82%D0%B.

И еще,я задумался над такой весчью,как запросы к серверу,то есть, краулер к сайту подключился,а потом веб-мастер смотрит какой именно бот к нему подключился.(вот вытянивают там бот гугл и т д,вот можно такую же штуку придумать,собс-но, дать название боту)

Добавлено через 18 минут
И еще один вопрос меня интересует,как вытянуть тут в коде определенную ссылку?например,код выполнился,нам нужно там вытащить ссылку под определенным номером.

Добавлено через 57 секунд
Java
1
2
3
4
==================================
Поиск ссылок закончен! Результаты:
==================================
1) Найдено: 12765ссылок
Java
1
private static final String START_LINK = "http://rambler.ru/";
Небольшой тест максимума.
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
27.09.2013, 20:24
а вы попробуйте вставить ту "непонятную" ссылку в окно браузера - то ссылка с русскими словами
1
6 / 6 / 1
Регистрация: 15.09.2013
Сообщений: 149
27.09.2013, 20:25  [ТС]
Да знаю...) надо UTF-16 читать,видимо.
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
27.09.2013, 20:27
имя боту это конечно здорово, но поверьте это как делить шкуру еще не убитого медведя. А по поводу "номер ссылки", то порядковый номер строки в файле БД я беру вот так
Java
1
in.mark(lineNumber);
, чтобы быть уверенным, что иду по порядку
1
6 / 6 / 1
Регистрация: 15.09.2013
Сообщений: 149
27.09.2013, 20:35  [ТС]
А вот что еще можно в него добавить?) говорите,комментируйте(будет занятие на выходные))
я сейчас думаю над расширением начального списка сайтов,брать его из файла.Также,складывать все результаты в файл.Пока отдельный файл,пока я не улчшу проверку,собс-но,ссылок.Может что то еще?)

Добавлено через 37 секунд
Цитата Сообщение от tankomaz Посмотреть сообщение
А по поводу "номер ссылки", то порядковый номер строки в файле БД я беру вот так
Код Java(TM) 2 Platform Standard Edition 5.0
1
in.mark(lineNumber);
Я знаю номер ссылки,мне нужно само значение.
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
27.09.2013, 20:52
кстати вот подумалось, можно как вариант перенастроить паука, чтобы тот собирал чисто уникальные домены, а затем проверял - если есть sitemap, то адреса брать с них (заодно подтянуть навыки в xml), если нету - то в пусть лошматит в рукопашную данный сайт но не выходя за границы домена

Добавлено через 9 минут
что-то я натупил с mark() методом

Добавлено через 7 минут
собственно а зачем конкретное значение из конкретной строки? это поток символов, разве что можно посчитать "\n" и спрогнозировать, но читать все равно придется весь файл еще раз.
1
6 / 6 / 1
Регистрация: 15.09.2013
Сообщений: 149
27.09.2013, 21:01  [ТС]
Цитата Сообщение от tankomaz Посмотреть сообщение
чтобы тот собирал чисто уникальные домены, а затем проверял - если есть sitemap
Да,да,это было бы круто,срочно грызу эту тему.

Добавлено через 8 минут
Цитата Сообщение от tankomaz Посмотреть сообщение
собственно а зачем конкретное значение из конкретной строки? это поток символов, разве что можно посчитать "\n" и спрогнозировать, но читать все равно придется весь файл еще раз.
Получение дополнительной статистики,например.Хм,читать весь файл,лучше написать новую программу,для вытаскивания какой то статистики.Например,сколько ссылок с одного домена и еще куча других параметров.
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
27.09.2013, 21:11
имхо лучше "анализатор" написать, ибо наш с вами паучек на данном этапе умеет только ссылки собирать уникальные и сам же по ним переходит для сбора новых, периодически сохраняя "бд" (кстати чувствую на SQLite скоро перейдем )

вообще всё должно быть "по полочкам". Один собирает ссылки, другой вытягивает с этих ссылок инфу, третий проводит статистику. Так что боюсь тремя классами мы тут с вами точно не ограничимся

какие дальнейшие шаги думаете предпринимать? написать анализатор?
кстати пробежался по сайтам, не особо сейчас смотрю sitemap.xml генерируют, так что пусть наверное будет как есть, само наполняет (мы кстати плевать сейчас хотели на тег <noindex>, думаю веб-мастера не будут сильно в обиде )
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.09.2013, 21:11
Помогаю со студенческими работами здесь

СМА LG WD-80180NU замена щёток, двигатель крутит рывками, непонятно модуль или двигатель?
Доброго времени суток. После замены щёток в данной машине двигатель стал крутить рывками. Подкинули подобный двигатель, но тоже с...

СМА Candy CS2 108RU не крутит двигатель, не крутит двигатель
СМА Candy CS2 108RU sn 3100128107421812 модуль управления 41019594 GIAS VS-038d EF207032 после скачка питания не крутит двигатель. Помпу,...

Поисковый запрос
Имеется test.csv Example,luna,x2,1.0 Primer,zoloto,x8,1.2 Test1,serebro,o9,1.1 Test2,metall,x2,1 Необходимо сделать...

Поисковый запрос
Здравствуйте. Есть такая вот строчка: ShellExecuteA(NULL, &quot;open&quot;, &quot;http://google.ru&quot;, NULL, NULL, SW_SHOWNORMAL); эта строчка открывает в...

Поисковый робот
Здравствуйте. Пробую написать робота для поиска нужного текста на сайте. Есть кое-что не понятно в алгоритме но надеюсь поправите. ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru