2016-01-19 7 views
0

У меня есть ссылка, которая содержит table. Первое, что я пробовал, - это найти, есть ли кнопка для клика и, к сожалению, нет. Затем я попытался использовать пакет с номером XML в R, чтобы получить данные между разными узлами, чтобы самостоятельно создать кадр данных.Как извлечь данные из html в R

Для этого мне нужно знать, какой узел (или тег HTML) я хотел бы извлечь. Поэтому я нажимаю правой кнопкой мыши на веб-браузере и нахожу тег, который содержит нужную мне таблицу. enter image description here

От <fieldset id="result" начинает содержание таблицы. Мы также видим из браузера первую строку таблицы: <li class="vesselResultEntry removeBackground">.

Затем, когда я пытался использовать R, чтобы загрузить этот HTML-код, я нашел целые теги <li>, которые касаются таблицы и заменены на <li class="toRemove"/>. Вот мой R код ниже, кстати:

library(XML) 
url <- "http://www.fao.org/figis/vrmf/finder/search/#stats" 
webpage <- readLines(url) 
htmlpage <- htmlParse(webpage, asText = TRUE) 
data <- xpathSApply(htmlpage, "//ul[@id='searchResultsContainer']") 
data 

# <ul id="searchResultsContainer" class="clean resultsContainer"><li class="toRemove"></li></ul> 

То, что я пытаюсь сделать в коде, просто чтобы увидеть, если я могу принести содержание в определенном теге. Очевидно, что строка, которую я хочу получить, не находится в объекте (webpage) Я сохранил.

Так что мои вопросы:

Есть ли способ, чтобы загрузить таблицу я хочу любыми способами (в идеале R)?

Есть ли какая-то защита на этом веб-сайте, которая мешает мне загружать весь HTML в виде текстового файла и извлекать данные?

Ценит за любые предложения

+0

Кажется, дубликат http://stackoverflow.com/questions/23028760/download-a-file-from-https-using-download-file – Ouroborus

+1

@Ouroborus Он использует другую библиотеку. –

+0

Посмотрите на использование xPath, который является независимым от языка способом запроса структуры XML. Кстати, вы никогда не говорили нам, что вы на самом деле здесь. –

ответ

1

Страница, которую вы пытаетесь извлечь собран динамически на стороне браузера по загрузке. Содержимое, которое вы получаете, напрямую получая URL-адрес, не содержит данных, которые вы видите при просмотре DOM. Эти данные загружаются позже из отдельного URL-адреса.

Я посмотрел и URL в вопрос:

http://www.fao.org/figis/vrmf/finder/services/public/vessels/search?c=true&gd=true&nof=false&not=false&nol=false&ps=30&o=0&user=NOT_SET

Я не уверен, что большинство из строки запроса есть, но ясно, что ps является «размер страницы» и o является «смещение». Размер страницы, по-видимому, превышает 200, над которым она вынуждена до 30. URL-адрес возвращает JSON, поэтому вам потребуется какой-то способ разобрать это. Данные, встроенные в ответы, говорят, что есть 231047 записей, поэтому вам придется сделать несколько запросов, чтобы получить все.

Поставщики данных обычно не ценят, как люди соскабливают свои данные. Возможно, вам стоит взглянуть на загружаемую версию.

+0

Спасибо @Ouroborus.Очень приятно знать, что есть такой способ увидеть данные на этом веб-сайте. Но я думаю, что прекращу свое исследование. 231047 слишком велико. – Lambo

Смежные вопросы