これはエレガントではなく、おそらくあまり堅牢ではありませんが、この場合は機能するはずです。
呼び出しの後の最初の 4 行require
は、URL を取得してテキストを抽出します。grep
は、TRUE
またはFALSE
探している文字列が見つかったかどうかに応じて、それをリスト内のwhich
インデックスに変換します。これを 1 ずつ増やします。これをcleantext
見ると、更新日が文字列 "Date Updated" の後のリスト内の次の要素であることがわかるからです。したがって、+1
「更新日」の後に要素が取得されます。行はgsub
文字列をクリーンアップするだけです。
「P27M」の問題は、それが何にも固定されていないことです。それは、自由なテキストが任意の位置に浮かんでいるだけです。価格が常に "P" の後に 1 ~ 3 桁の数字、その後に "M" が続き、しかもページにそのような文字列が 1 つしかないことが確実な場合は、grep または正規表現が機能します。入手困難。
require(XML)
require(RCurl)
myurl <- 'http://www.sulit.com.ph/index.php/view+classifieds/id/3991016/BEAUTIFUL+AYALA+HEIGHTS+QC+HOUSE+FOR+SALE'
mytext <- getURL(myurl)
myhtml <- htmlTreeParse(mytext, useInternal = TRUE)
cleantext <- xpathApply(myhtml, "//body//text()[not(ancestor::script)][not(ancestor::style)][not(ancestor::noscript)]", xmlValue)
cleantext <- cleantext[!cleantext %in% " "]
cleantext <- gsub(" "," ", cleantext)
date_updated <- cleantext[[which(grepl("Date Updated",cleantext))+1]]
date_posted <- cleantext[[which(grepl("Date Posted",cleantext))+1]]
date_posted <- gsub("^[[:space:]]+|[[:space:]]+$","",date_posted)
date_updated <- gsub("^[[:space:]]+|[[:space:]]+$","",date_updated)
print(date_updated)
print(date_posted)