在R中使用XML包时出错

时间:2012-06-08 21:56:55

标签: r xml-parsing html-parsing web-scraping

我正在收集有关不同大学的数据,并且在执行以下代码后我对跟随错误有疑问。问题是使用htmlParse()

代码:

url1< - “http://nces.ed.gov/collegenavigator/?id=165015”

网页1< - getURL(url1)

doc1< - htmlParse(网页1)

输出:

htmlParse(网页1)中的错误:文件

!DOCTYPE html PUBLIC“ - // W3C // DTD XHTML 1.0 Transitional // EN”“http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”

html xmlns =“http://www.w3.org/1999/xhtml”head id =“ctl00_hd”meta http-equiv =“Content-type”content =“text / html; charset = UTF-8” /标题

    College Navigator - National Center for Education Statistics

/ titlelink href =“css / md0.css”type =“text / css”rel =“stylesheet”meta name =“keywords”content =“大学导航员,大学搜索,高等教育,高等教育统计,NCES,IPEDS ,大学定位器“/ meta meta name =”description“content =”College Navigator是一个免费的消费者信息工具,旨在帮助学生,家长,高中辅导员和其他人获取有关美国7000多所高等院校的信息 - 例如提供的课程,保留和毕业率,价格,可用的援助,学位授予,校园安全和认证。“meta> meta name =”robots“content =”index,nofollow“/ metalink

在使用此软件包之前,我有网页抓取页面,我从来没有遇到过问题。名称=“机器人”与它有什么关系吗?任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:1)

http://validator.w3.org/check?verbose=1&uri=http%3A%2F%2Fnces.ed.gov%2Fcollegenavigator%2F%3Fid%3D165015 表示网页格式错误。您的浏览器可以弥补这一点,但您的R包存在问题。

如果你正在使用Windows,你可以通过IE浏览器为你修复它,如下所示:

library(rcom)
library(XML)
ie = comCreateObject('InternetExplorer.Application')
ie[["visible"]]=T # true for debugging
comInvoke(ie,"Navigate2","http://nces.ed.gov/collegenavigator/?id=165015")
while(comGetProperty(ie,"busy")||comGetProperty(ie,"ReadyState")<4){
 Sys.sleep(1)
 print(comGetProperty(ie,"ReadyState"))
}
myDoc<-comGetProperty(ie,"Document")
webpage1<-myDoc$getElementsByTagName('html')[[0]][['innerHTML']]
ie$Quit()
doc1 <- htmlParse(webpage1)