Да, когда вы импортируете классы с одинаковыми простыми именами, вы должны ссылаться на них по их полностью квалифицированным именам классов. Я бы оставил инструкции импорта, поскольку он дает другим разработчикам представление о том, что находится в файле, когда они работают с ним.
java.util.Data date1 = new java.util.Date();
my.own.Date date2 = new my.own.Date();
Я должен был сделать это однажды сам.
Один из способов сделать это - использовать выражения XPath. Вам понадобятся эти пакеты, установленные из репозитория на http://www.omegahat.org/
library(RCurl)
library(RTidyHTML)
library(XML)
. Мы используем RCurl для подключения к интересующему веб-сайту. Он имеет множество опций, которые позволяют вам получить доступ к веб-сайтам, с которыми у стандартных функций в базе R возникнут трудности, я думаю, это будет справедливо сказать. Это R-интерфейс к библиотеке libcurl.
Мы используем RTidyHTML для очистки искаженных веб-страниц HTML, чтобы их было легче анализировать. Это R-интерфейс библиотеки libtidy.
Мы используем XML для анализа кода HTML с помощью наших выражений XPath. Это R-интерфейс к библиотеке libxml2.
В любом случае, вот что вы делаете (минимальный код, но опции доступны, см. Справочные страницы соответствующих функций):
u <- "http://stackoverflow.com/questions/tagged?tagnames=r"
doc.raw <- getURL(u)
doc <- tidyHTML(doc.raw)
html <- htmlTreeParse(doc, useInternal = TRUE)
txt <- xpathApply(html, "//body//text()[not(ancestor::script)][not(ancestor::style)][not(ancestor::noscript)]", xmlValue)
cat(unlist(txt))
Могут быть некоторые проблемы с этим подходом, но я не могу вспомнить то, что они не в моей голове (я не думаю, что мое выражение xpath работает со всеми веб-страницами, иногда оно может не отфильтровывать код скрипта или просто может вообще не работать с некоторыми другими страницами, лучше всего экспериментировать! )
PS Другой способ, который работает почти идеально, я думаю, что при просмотре в Интернете всего текста из html заключается в следующем (в основном, когда Internet Explorer выполняет преобразование за вас):
library(RDCOMClient)
u <- "http://stackoverflow.com/questions/tagged?tagnames=r"
ie <- COMCreate("InternetExplorer.Application")
ie$Navigate(u)
txt <- list()
txt[[u]] <- ie[["document"]][["body"]][["innerText"]]
ie$Quit()
print(txt)
ОДНАКО, мне никогда не нравилось делать это потому что это не только медленно, но если вы векторизуете его и применяете вектор URL, если Internet Explorer падает на плохой странице, тогда R может зависнуть или аварийно завершить работу (я не думаю, что попытка очень помогает в этом случае) , Также он допускает всплывающие окна. Я не знаю, прошло уже много времени с тех пор, как я это сделал, но подумал, что должен указать на это.
Что ж, это не совсем способ R, но все очень просто: перехитрите плагин для firefox. Базовая версия бесплатна и помогает извлекать таблицы и прочее.
а, и если вы действительно хотите проделать сложный путь в R, эта ссылка для вас:
Мне повезло с функцией readHTMLTable() пакета XML. Она возвращает список всех таблиц на странице.
> library(XML)
> url <- 'http://en.wikipedia.org/wiki/World_population'
> allTables <- readHTMLTable(url)
На каждой странице может быть много таблиц.
> length(allTables)
[1] 17
Поэтому просто выберите ту, которая вам нужна.
> tbl <- allTables[[3]]
Самой большой проблемой может стать установка пакета XML. Он большой, и ему нужна библиотека libxml2 (а в Linux ему также нужен пакет xml2-config Debian). Вторая большая проблема заключается в том, что HTML-таблицы часто содержат ненужный вам мусор, помимо данных, которые вам нужны.