ReadLines関数は、ソースページのすべてのコンテンツを1行で表示します。
con = url("target_url_here")
htmlcode = readLines(con)
readLines関数は、ソースページのすべての行を1行に連結しました。したがって、元のhtmlソースページの15行目に移動する方法はありません。
次のアプローチは、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)
タイトルを付けます。
しかし、私の質問は、htmlの15行目と言う行に移動するにはどうすればよいですか?言い換えると、htmlを文字列のベクトルとして扱うにはどうすればよいですか。ベクトルの各要素はhtmlページ/解析されたhtmlオブジェクトの個別の行です。
readLines()
のドキュメントをよく見ると、実際には次のようになります。
読み取られた行数の長さの文字ベクトル。
だからあなたの場合:
con = url("http://example.com/file_to_parse.html")
htmlCode = readLines(con)
簡単にhtmlCode[15]
15にアクセスするにはth 元のhtmlソースページの行。
あなたのコメントに応えて
しかし、解析されたHTMLオブジェクトの15行目に移動する方法はありますか?
これを行うには、いくつかの異なる方法があります。 1つはコメントの中でlukeAによって言及されています。もう1つは、capture.output()
を使用して、解析されたhtmlドキュメントを1行ずつ文字ベクトルとして取得することです。この例では、?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>"
私はこれがうまく機能することを発見しました、それは滑らかではありません、しかしそれは仕事を成し遂げます。
library(XML)
url <-"your desired website"
html <-htmlTreeParse(url, useInternalNodes = T)
text <-readLines(url)
text
nchar (text[15])