Объединить Paste0 с read_html и кавычками

Я пытаюсь получить данные с помощью 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."

Не показывать скриншоты. Используйте вырезание и вставку, чтобы показать код.

user2554330 14.07.2024 23:36

Цель вашего кода немного двусмысленна. Вы подумали, что print(x, quote = FALSE) где x содержит URL-адрес страницы, html-файл которой вы хотите скачать? Может быть, вы хотели просто использовать read_html() на x напрямую, а затем извлечь узлы и текст? Мне интересно, не является ли это всего лишь синтаксической ошибкой с неуместной скобкой.

joran 14.07.2024 23:41

Также не совсем понятно, зачем вообще нужны кавычки в URL-адресе. Разве вам не нужен сам URL-адрес? С кавычками это, вероятно, уже недействительный URL-адрес.

joran 14.07.2024 23:43

@ user2554330: Я добавил код в ОП...

sfyn 15.07.2024 00:04

@joran read_html принимает URL-адрес, и этот URL-адрес должен быть заключен в кавычки. пример: read_html("govtrack.us/congress/bills/118/hr8774")%>% html_nodes("#UserPositionModal+ p") %>% html_text() ....... вывод [1] " Выполнение ассигнований для Министерства обороны на финансовый год, заканчивающийся 30 сентября 2025 года, и на другие цели».

sfyn 15.07.2024 00:06
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам не нужен дополнительный набор кавычек, если сама переменная является строкой. (Я думаю, это потому, что он уже оценивается с кавычками?)

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].

sfyn 15.07.2024 00:46

Пожалуйста, смотрите уточняющее редактирование.

Jon Spring 15.07.2024 00:46

еще раз спасибо @Джон Спринг. Мой код не повторяет ваш. Вместо возвращаемого значения я получаю ошибку....b_url<-paste0("https://www.govtrack.us/congress/bil‌​ls", "/",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.

sfyn 15.07.2024 01:00

Я думаю, что веб-адрес хочет "hr8774", а не "HR8774"? см. webmasters.stackexchange.com/questions/90339/…. Попробуйте tolower(bills[15821,1]) там.

Jon Spring 15.07.2024 01:03

Я просто понял это и попытался снизить, и это сработало. Я приму ваш ответ сейчас. Спасибо.

sfyn 15.07.2024 01:09

Другие вопросы по теме