Может ли Crawler4j получать контент сайта?
Я очень новичок в Java.
Теперь я хочу получить содержимое новостной статьи с помощью поиска новостей Google - ключевое слово: "игрушка" со страницы 1 до страницы 10.
То есть извлекает 100 новостного контента со страницы 1 - страницы 10. (при условии, что на каждой странице 10 статей новостей)
После того, как я прочитал этот Crawler4j против Jsoup для сканирования и разбора страниц в Java
Я решил использовать Crawler4j, как он может
Укажите базовый URI (домашняя страница)
Возьмите все URI с каждой страницы и извлеките их содержимое.
Перемещение рекурсивно для каждого URI, который вы получаете.
Получить содержимое только URI, которые находятся внутри этого сайта (могут быть внешние URI, ссылающиеся на другой сайт, они нам не нужны).
В моем случае, я могу дать страницу поиска Google от p1 до p10 . И она возвращает статью 100 новостей, если я установлю intnumberOfCrawlers=1
Однако, когда я попробую пример Quickstart of Crawler4j
Он возвращает только внешние ссылки, найденные по оригинальной ссылке. Как это:
URL: http://www.ics.uci.edu/~lopes/
Text length: 2619
Html length: 11656
Number of outgoing links: 38
URL: http://www.ics.uci.edu/~welling/
Text length: 4503
Html length: 23713
Number of outgoing links: 24
URL: http://www.ics.uci.edu/~welling/teaching/courses.html
Text length: 2222
Html length: 15138
Number of outgoing links: 33
URL: http://www.ics.uci.edu/
Text length: 3661
Html length: 51628
Number of outgoing links: 86
Следовательно, мне интересно, может crawler4j
выполнить функцию, которую я поднял. Или я должен использовать crawler4j
+ JSoup
все вместе?
2 ответа
crawler4j
уважает политику обхода, такую как robots.txt
, В вашем случае этот файл следующий.
Изучение этого файла показывает, что запрещено сканировать заданные начальные точки:
Disallow: /search
Таким образом, вы не сможете сканировать данный сайт, если вы не измените классы, чтобы игнорировать robots.txt
, Однако это не считается вежливым и не соответствует этическим нормам.
В вашем посте много вопросов, на которые я постараюсь ответить:
"Может ли он получать содержимое сайта с помощью Crawler4j?"
- Да, это может быть продемонстрировано на примере исходного кода github.
- Однако для более детального анализа / манипулирования DOM я рекомендую вам добавить Jsoup. Вот документация для Jsoup
"Следовательно, мне интересно, может ли crawler4j выполнить функцию, которую я поднял. Или я должен использовать crawler4j +JSouptogether?"
- Используйте Crawler4j для того, что это самое лучшее, Crawling
- Используйте Jsoup для извлечения и управления данными через удобный API
"Он возвращает только внешние ссылки, найденные по оригинальной ссылке.
- в
BasicCrawler
вам нужно добавить разрешающие URL здесьreturn href.startsWith("http://www.ics.uci.edu/");
изменить, чтобы включить больше - в
BasicCrawlController
вам нужно будет добавить ваши семена страницы здесьconfig.setMaxDepthOfCrawling(2);