2016-04-05 2 views
0

Я только что отредактировал мой вопрос, чтобы сделать его более общим: «Как очистить таблицу, используя r, когда формат не покрыт никакими функциями r?»Скребковые столы не всегда легкие

Прежде всего, как узнать, соответствует ли формат тем функциям, которые функционируют как rvest?

Во-вторых, допустим, я пробовал все доступные функции скремблирования, и они не сработали, как мне следует продолжить? Напишите функцию разбора самостоятельно? Есть ли более простой способ сделать это?

Если readHTMLTable не может работать для этого экземпляра, каковы другие варианты, которые я должен преследовать, помимо синтаксического анализа HTML-кода при огромных манипуляциях с строкой?

+0

Чтение FM: пример справки сначала читает документ: 'doc = htmlParse (url); tableNodes = getNodeSet (doc, "// table"); tb = readHTMLTable (tableNodes [[2]]) ' –

+1

Кроме того, это не похоже на таблицу HTML. Можете взглянуть на таблицу, но на самом деле иметь другую структуру. –

+0

Попробуйте прочитать с помощью XML-ориентированных функций. –

ответ

0

Я думаю, что общий ответ на это - «соскабливание на любом языке часто является болью в шее». Это связано с тем, что люди помещают материал в Интернете в случайных, дрянных форматах, которые сложно обрабатывать машинам.

Я не делаю огромного количества царапин и не имею лучшего ответа, чем «ткнуть в исходное представление страницы, использовать пробную версию и ошибку».

Похоже, что таблица плохо структурирована; если вы попытаетесь извлечь <tr> (строки таблицы), вы получите мусор ...

Weblink <- "http://hmofs.northwestern.edu/hc/crystals.php" 
library(rvest) 
rr <- read_html(Weblink) 
tab2 <- html_nodes(rr,"table")[4]  ## get 4th table 
vals <- html_text(html_nodes(tab2,"td")) ## get *all* elements in 4th table 

Теперь принимают только числовые значения - 7-й столбец таблицы загрузки информации, и получает отбрасывают этот путь

vals <- suppressWarnings(na.omit(as.numeric(vals))) 
matrix(vals,byrow=TRUE,ncol=6) 
Смежные вопросы