Использование гаджета rvest, xml2 и селектора для создания веб-страниц приводит к xml_missing <NA> - PullRequest
1 голос
/ 29 января 2020

Я пытаюсь получить информацию со следующего URL:

https://www.google.com/search?q=812-800%20H%20St%20NW

Я хочу получить выделенный "812 H St NW": target

Гаджет селектора (расширение chrome) предлагает использовать следующий узел ".desktop-title-content"

Однако в результате я получаю NA и я не понимаю, как решить эту проблему.

Вот мой код:

link <- "https://www.google.com/search?q=812-800%20H%20St%20NW"
xml2::read_html(link) %>% 
  rvest::html_node(".desktop-title-content") %>%  rvest::html_text()

[1] NA

Спасибо

Ответы [ 2 ]

0 голосов
/ 30 января 2020

Похоже, что контент, который я хочу получить, генерируется javascript. Поэтому мне нужно создать файл. js и получить к нему доступ, используя фантом JS согласно этому уроку: https://www.datacamp.com/community/tutorials/scraping-javascript-generated-data-with-r

Затем я смогу использовать rvest для отбросьте правильное содержание.

К сожалению, мне нужно сделать это примерно для 2000 различных ссылок. Я буду искать решение для автоматического создания 2000 ". js" файлов.

Спасибо за ваши ответы.

0 голосов
/ 30 января 2020

Я думаю, что вы хотите проверить исходную страницу, когда SelectorGadget не очень вам помогает. В этом случае вам просто нужно найти текст между <title> и </title>. У меня был некоторый дополнительный текст (то есть, - поиск Google) в тексте. Таким образом, я удалил это в конце. Вы можете не иметь этого.

read_html("https://www.google.com/search?q=812-800%20H%20St%20NW") %>% 
html_nodes("title") %>% 
html_text() %>%
sub(pattern = " -.*$", replacement = "")

#[1] "812-800 H St NW "
...