Я пытаюсь получить данные с помощью read_html. read_html принимает URL. Строка URL объединяется как «x». Поскольку при конкатенации используются «кавычки», мне нужно использовать print и установить quotes = FALSE, чтобы избавиться от обратных косых черт (см. снимок экрана ниже).
как только я подключаю x к оставшейся команде read_html, я получаю ошибку. Есть ли лучший способ сделать это?
обновления:
> x<-paste0('"https://www.govtrack.us/congress/bills/', bills[15821,4],"/",bills[15821,1],'"')
> x
[1] "\"https://www.govtrack.us/congress/bills/118/HR8774\""
> print(x, quote = FALSE)
[1] "https://www.govtrack.us/congress/bills/118/HR8774"
> read_html(print(x, quote=FALSE)%>% html_nodes("#UserPositionModal+ p") %>% html_text())
[1] "https://www.govtrack.us/congress/bills/118/HR8774"
Error in UseMethod("xml_find_all") :
no applicable method for 'xml_find_all' applied to an object of class "character"
> read_html("https://www.govtrack.us/congress/bills/118/hr8774")%>% html_nodes("#UserPositionModal+ p") %>% html_text()
[1] "Making appropriations for the Department of Defense for the fiscal year ending September 30, 2025, and for other purposes."
Цель вашего кода немного двусмысленна. Вы подумали, что print(x, quote = FALSE)
где x
содержит URL-адрес страницы, html-файл которой вы хотите скачать? Может быть, вы хотели просто использовать read_html()
на x
напрямую, а затем извлечь узлы и текст? Мне интересно, не является ли это всего лишь синтаксической ошибкой с неуместной скобкой.
Также не совсем понятно, зачем вообще нужны кавычки в URL-адресе. Разве вам не нужен сам URL-адрес? С кавычками это, вероятно, уже недействительный URL-адрес.
@ user2554330: Я добавил код в ОП...
@joran read_html принимает URL-адрес, и этот URL-адрес должен быть заключен в кавычки. пример: read_html("govtrack.us/congress/bills/118/hr8774")%>% html_nodes("#UserPositionModal+ p") %>% html_text() ....... вывод [1] " Выполнение ассигнований для Министерства обороны на финансовый год, заканчивающийся 30 сентября 2025 года, и на другие цели».
Вам не нужен дополнительный набор кавычек, если сама переменная является строкой. (Я думаю, это потому, что он уже оценивается с кавычками?)
x <- paste0("https://www.govtrack.us/congress/bills/", "118", "/", "hr8774")
x
#[1] "https://www.govtrack.us/congress/bills/118/hr8774"
rvest::read_html(x) |>
rvest::html_nodes("#UserPositionModal+ p") |>
rvest::html_text()
#[1] "Making appropriations for the Department of Defense for the fiscal
#year ending September 30, 2025, and for other purposes."
спасибо, но мне нужно объединить два последних значения, поскольку они будут динамическими, поэтому мне нужна функция «Вставить» или что-то подобное. Какие-либо предложения? Это то, что я пытался -paste0('"https://www.govtrack.us/congress/bills/', bills[15821,4],"/",bills[15821,1],'"')
Здесь вместо 118 и hr8774 я вызываю фрейм данных счетов и извлекаю столбцы 1 и 4 для строки 15821 bills[15821,4] and bills[15821,1]
.
Пожалуйста, смотрите уточняющее редактирование.
еще раз спасибо @Джон Спринг. Мой код не повторяет ваш. Вместо возвращаемого значения я получаю ошибку....b_url<-paste0("https://www.govtrack.us/congress/bills", "/",bills[15821,4],"/", bills[15821,1],"") > b_url [1] "https://www.govtrack.us/congress/bills/118/HR8774" > rvest::read_html(b_url) |> + rvest::html_nodes("#UserPositionModal+ p") |> + rvest::html_text() Error in open.connection(x, "rb") : HTTP error 404.
Я думаю, что веб-адрес хочет "hr8774"
, а не "HR8774"
? см. webmasters.stackexchange.com/questions/90339/…. Попробуйте tolower(bills[15821,1])
там.
Я просто понял это и попытался снизить, и это сработало. Я приму ваш ответ сейчас. Спасибо.
Не показывать скриншоты. Используйте вырезание и вставку, чтобы показать код.