URL-адреса сканирования в Интернете, соответствующие определенному шаблону в R, с помощью RCrawler - PullRequest
0 голосов
/ 25 марта 2019

Я пытаюсь сканировать и впоследствии очищать все страницы с веб-сайта, используя пакет 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 одновременных ядер / соединений.

...