Я новичок в мир HTML выскабливания, и я с трудом вытягивать в пунктах под определенными заголовками, используя rvest в R.Использовать rvest для очистки всех p после h? (Или другой пакет R)
Я хочу, чтобы очистить данные из нескольких сайтов, которые все имеют относительно аналогичная настройка. Все они имеют одинаковые заголовки, но количество абзацев под заголовком может измениться. Я был в состоянии наскрести конкретные пункты под заголовком следующим кодом:
unitCode <- data.frame(unit = c('SLE010', 'SLE115', 'MAA103'))
html <- sapply(unitCode, function(x) paste("http://www.deakin.edu.au/current-students/courses/unit.php?unit=",
x,
"&return_to=%2Fcurrent-students%2Fcourses%2Fcourse.php%3Fcourse%3DS323%26version%3D3",
sep = ''))
assessment <- html[3] %>%
html() %>%
html_nodes(xpath='//*[@id="main"]/div/div/p[3]') %>%
html_text()
Элемент «XPath» тянет в первом абзаце под заголовком оценки. На некоторых страницах есть несколько абзацев под заголовком оценки, которые я могу получить, если я изменю переменную «xpath», чтобы указать их конкретно, например. p [4] или p [5]. К сожалению, я хочу повторить этот процесс на сотнях страниц, поэтому изменение xpath каждый раз не подходит, и я даже не знаю, сколько абзацев будет на каждой странице.
Я думаю, что потянув все < p> после заголовка, который меня интересует, это лучший вариант, учитывая неопределенность вокруг настройки страниц.
Мне было интересно, есть ли способ очистить все < p> после < h3> Оценка < h3> Использование rvest или какого-либо другого R-скребкового пакета?
Thanks @hrbrmstr. Все это работает, за исключением того, что я получаю сообщение об ошибке, если я использую 'read_html()' вместо использования 'html()'. Когда я использую 'read_html()' и продолжаю запускать 'html_nodes()', я получаю ** Ошибка в UseMethod ("html_nodes"): не применимый метод для 'html_nodes', примененный к объекту класса "c ('xml_document', 'xml_node') "**. Когда я переключился на использование 'html()' все работало нормально ... Я обновил мою версию R и переустановил пакеты, поэтому не уверен, что происходит с 'read_html()'. – Adam
Я использую версию из github (которую я должен был запомнить и отметить в сообщении). Утечка идет! Рад, что это работает для вас. – hrbrmstr