Может ли Crawler4j получать контент сайта?

Я очень новичок в Java.

Теперь я хочу получить содержимое новостной статьи с помощью поиска новостей Google - ключевое слово: "игрушка" со страницы 1 до страницы 10.

https://www.google.com/search?q=toy&biw=1366&bih=645&tbm=nws&source=lnms&sa=X&ved=0ahUKEwiTp82syoXPAhUMkpQKHawZBOoQ_AUICygE

То есть извлекает 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?"

  1. Да, это может быть продемонстрировано на примере исходного кода github.
  2. Однако для более детального анализа / манипулирования DOM я рекомендую вам добавить Jsoup. Вот документация для Jsoup

"Следовательно, мне интересно, может ли crawler4j выполнить функцию, которую я поднял. Или я должен использовать crawler4j +JSouptogether?"

  1. Используйте Crawler4j для того, что это самое лучшее, Crawling
  2. Используйте Jsoup для извлечения и управления данными через удобный API

"Он возвращает только внешние ссылки, найденные по оригинальной ссылке.

  • в BasicCrawler вам нужно добавить разрешающие URL здесь return href.startsWith("http://www.ics.uci.edu/"); изменить, чтобы включить больше
  • в BasicCrawlController вам нужно будет добавить ваши семена страницы здесь config.setMaxDepthOfCrawling(2);
Другие вопросы по тегам