Я пытаюсь сканировать и впоследствии очищать все страницы с веб-сайта, используя пакет Rcrawler
в R. Вместо того, чтобы сканировать все подстраницы, я хочу сканировать только те страницы, URL которых соответствует определенному шаблону, потому что веб-сайт должен бытьcrawled довольно большой, поэтому я не хочу сканировать нерелевантные URL.Чтобы быть более конкретным, я хочу сканировать все страницы www.laola1.at, которые относятся к категории basketball/nba
.Пример:
- www.laola1.at / de / red / sport-mix / баскетбол / nba / news / kevin-durant-legt-sich-mit-referees-an - fliegt-vom-court должен сканироваться
- www.laola1.at / de / красный / sport-mix / баскетбол / abl / news / abl - traiskirchen-lions-wieder-derby-sieger-gegen-dukes не должен быть cralwd
Однако при запускеВ следующем коде объект INDEX
, возвращаемый вызовом функции, дает только 23 результата, в то время как в действительности существует намного больше URL-адресов, соответствующих шаблону, что оценивается при посещении данного веб-сайта вручную.Вызов функции был:
library(Rcrawler)
Rcrawler(Website = "https://www.laola1.at/de/",
crawlUrlfilter = "/basketball/nba/")
Согласно документации RCrawler, аргумент crawlUrlfilter
должен помочь:
Urlfilter означает, что сканер будет следовать только ссылкам, соответствующим регулярному выражениюpattern
Но, как показано в примере выше, функция не может получить все URL-адреса, соответствующие шаблону.Кстати, менее строгая процедура сопоставления crawlUrlfilter = '/basketball/'
также дает гораздо меньше URL, чем на самом деле.
У кого-нибудь есть идеи, как решить эту проблему?
ОБНОВЛЕНИЕ:
Согласно https://github.com/salimk/Rcrawler/issues/45 Rcrawler может пропускать ссылки, если для сканирования веб-сайта используется более двух одновременных подключений.Поэтому я попытался использовать только одно соединение на ядро с помощью следующего вызова:
Rcrawler(Website = "https://www.laola1.at/de/",
crawlUrlfilter = "/basketball/nba/", no_cores = 1, no_conn = 1)
Однако результаты в точности совпадают с настройкой по умолчанию для 4 одновременных ядер / соединений.