Я пытаюсь очистить (динамически c?) Контент с веб-страницы с помощью пакета rvest. Я понимаю, что для содержимого Dynami c необходимо использовать такие инструменты, как Selenium или Phantom JS.
Однако мои эксперименты наводят меня на мысль, что я все еще смогу найти нужный мне контент, используя только стандартные пакеты webscraping r (rvest, httr, xml2).
Для этого примера я буду использовать веб-страницу Google Maps. Вот пример url ...
https://www.google.com/maps/dir/920+nc-16-br, + denver, + n c, + 28037/2114 + hwy + 16, + denver, + n c, + 28037 /
Если вы перейдете по гиперссылке выше, вы попадете на пример веб-страницы. Содержимое, которое я хотел бы видеть в этом примере, это адреса «920 N C -16, Crumpler, N C 28617» и «2114 N C -16, Ньютон, N C 28658» в верхнем левом углу. угол веб-страницы.
Стандартные методы с использованием селектора css или xpath не работали, что изначально имело смысл, так как я думал, что это содержимое было динамическим c.
url<-"https://www.google.com/maps/dir/920+nc-16-br,+denver,+nc,+28037/2114+hwy+16,+denver,+nc,+28037/"
page<-read_html(url)
# The commands below all return {xml nodeset 0}
html_nodes(page,css=".tactile-searchbox-input")
html_nodes(page,css="#sb_ifc50 > input")
html_nodes(page,xpath='//*[contains(concat( " ", @class, " " ), concat( " ", "tactile-searchbox-input", " " ))]')
Приведенные выше команды возвращают «{xml nodeset 0}», который, как я думал, был результатом динамического генерирования этого содержимого, но вот моя путаница, если я преобразую всю страницу в текст с помощью html_text (), я могу найти адреса в возвращаемом значении.
html_text(read_html(url))
substring<-substr(x,33561-100,33561+300)
Выполнение вышеуказанных команд приводит к подстроке со следующим значением:
"null, null, null, null, [null, null, null, ноль, ноль, ноль, ноль, [[[\ " 920 N C -16, Крамплер, N C 28617 \", ноль, ноль, ноль, ноль, ноль, ноль, ноль , нуль, ноль, ноль, \ "Nzm5FTtId895YoaYC4wZqUnMsBJ2rlGI \"] \ n, [\ " 2114 N C -16, Ньютон, N C 28658 \", ноль, ноль, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, \ "RIU-FSdWnM8f-IiOQhDwLoMoaMWYNVGI \"] \ п] \ п, NULL, NULL, 0, NULL, [[NULL, NULL, NULL, NULL, null, null, null, 3] \ n, [null, null, null, null, [null, null, null, null, nu "
Подстрока очень грязная, но содержит содержимое, которое мне нужно. Я слышал, что анализ веб-страниц с использованием регулярных выражений не одобряется, но я не могу придумать какой-либо другой способ получения этого контента, который также позволил бы избежать использования динамических инструментов очистки 1051 *.
Если у кого-то есть предложения по синтаксическому анализу возвращенного html или я могу объяснить, почему я не могу найти содержимое с помощью селекторов xpath или css, но могу найти его, просто проанализировав необработанный текст html , будет очень признателен.
Спасибо за ваше время.