Как читать n-ю строку Parsed html в R
Функция readLines отображает все содержимое исходной страницы в одной строке.
con = url("target_url_here")
htmlcode = readLines(con)
Функция readLines объединила все строки исходной страницы в одной строке. Таким образом, я не могу перейти к 15-й строке на исходной исходной странице html.
Следующий подход - попытаться разобрать его с помощью пакета XML или пакета httr.
library("httr")
html <- GET("target_url_here")
content2 = content(html,as="text")
parsedHtml = htmlParse(content2,asText=TRUE)
Распечатав файл parsedHtml, он сохраняет html-формат и отображает все содержимое, как это видно на исходной странице.
Теперь предположим, что хочу извлечь заголовок, поэтому функция
xpathSApply(parsedHtml,"//title",xmlValue)
даст название.
Но мой вопрос: как мне перейти к любой строке, скажем, 15-й строке html? Другими словами, как я могу рассматривать html как вектор строк, где каждый элемент вектора является отдельной строкой в html-странице/анализированном html-объекте.
Ответы
Ответ 1
Чтобы лучше рассмотреть документы для readLines()
, он возвращает:
Символьный вектор длины число прочитанных строк.
Итак, в вашем случае:
con = url("http://example.com/file_to_parse.html")
htmlCode = readLines(con)
вы можете легко сделать htmlCode[15]
для доступа к строке 15 th на исходной исходной странице html.
Ответ 2
В ответ на ваш комментарий
Но есть ли способ перейти к 15-й строке в анализируемом HTML-объекте?
Есть несколько разных способов сделать это. Один упоминается lukeA в комментариях. Другим является использование capture.output()
для получения анализируемого документа html по строке в виде символьного вектора. В этом примере используются данные примера из ?htmlParse
library(XML)
f <- system.file("exampleData", "9003.html", package = "XML")
Разберите html-документ:
( doc <- htmlParse(f) )
# <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
# <html xmlns="http://www.w3.org/1999/xhtml">
# <head>
# <meta name="generator" content="HTML Tidy for Linux/x86 (vers 1 September 2005), see www.w3.org">
# <title>BKA/RIS VwGH - Volltext</title>
# <base target="_self">
# </head>
# <body>
# Veröffentlichungsdatum
# </body>
# </html>
Просмотр анализируемого документа в виде символьного вектора:
capture.output(doc)
# [1] "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">"
# [2] "<html xmlns=\"http://www.w3.org/1999/xhtml\">"
# [3] "<head>"
# [4] "<meta name=\"generator\" content=\"HTML Tidy for Linux/x86 (vers 1 September 2005), see www.w3.org\">"
# [5] "<title>BKA/RIS VwGH - Volltext</title>"
# [6] "<base target=\"_self\">"
# [7] "</head>"
# [8] "<body>"
# [9] "Veröffentlichungsdatum"
# [10] "</body>"
# [11] "</html>"
# [12] " "
Получить (например,) 5-ю строку:
capture.output(doc)[5]
#[1] "<title>BKA/RIS VwGH - Volltext</title>"