2013-11-02 14 views
7

WebサイトからHTMLファイルを読みたい。具体的には、私はgutenberg.orgからHTML形式の書籍を読んでいます。各章のタイトルはタグ「h2」でマークされ、各章の内容は「h2」の後の段落タグ「p」の後に続きます。パッケージXMLを使用して、各タグの値または完全なHTMLコードを取得できます。ここでRファイルの解析R

は、ジョージ・エリオットのミドルマーチを使用してサンプルコードです:

library(XML) 

doc.html = htmlTreeParse('http://www.gutenberg.org/files/145/145-h/145-h.htm', 
         useInternal = TRUE) 
doc.value <- xpathApply(doc.html, '//h2|//p', xmlValue) 
doc.html.value <- xpathApply(doc.html, '//h2|//p') 

doc.valueは、各要素は、タグの内容ですが、私はH2タグやpタグであるかどうかを知ることができないリストが含まれています。一方、doc.html.valueには、各タグのhtmlコードのリストが含まれています。これは "h2"か "p"タグかどうか私に情報を与えますが、それはまた私が必要としない多くの余分なコード(スタイル情報など)を含んでいます。

私の質問:タグの種類とタグの値だけを取得する簡単な方法はありますか?

答えて

5

xmlValueのドキュメントでは、xmlNameという別の機能があり、タグの名前だけが抽出されていることがわかります。これらの2つを使用して、あなたが望むものを計算することができます:

doc.html.name.value <- xpathApply(doc.html, '//h2|//p', function(x) { list(name=xmlName(x), content=xmlValue(x)); }) 

> doc.html.name.value[[1]] 
$name 
[1] "h2" 

$content 
[1] "\r\nGeorge Eliot\r\n"