这不是优雅的,可能不是很健壮,但它应该适用于这种情况。
调用后的前 4 行require
检索 URL 并提取文本。grep
返回一个TRUE
或FALSE
取决于我们正在寻找的字符串是否已找到,将which
其转换为列表中的索引。我们将其加 1,因为如果您查看,cleantext
您会发现更新日期是列表中字符串“更新日期”之后的下一个元素。所以+1
我们得到了“更新日期”之后的元素。gsub
线条只是清理字符串。
“P27M”的问题在于它没有锚定在任何东西上——它只是漂浮在任意位置的自由文本。如果您确定价格始终是“P”后跟 1 到 3 位数字,然后是“M”并且页面中只有一个这样的字符串,那么 grep 或 regex 将起作用,否则很难得到。
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)