javascript - R 网页抓取 - HTML 中的隐藏文本

标签 javascript html r web-scraping

我想从以下页面中抓取网址:

http://www.europarl.europa.eu/meps/en/1186/seeall.html?type=CRE&leg=5

此页面有 180 个网址可供收集(每个网址都是议会演讲的链接),但只要要抓取的网址超过 100 个,我就会遇到问题,因为只能访问其他演讲单击页面底部的“查看更多”框。我试图找出如何显示我认为被“getMore”功能隐藏的附加链接,但没有成功!为这里的天真道歉...

我当前的代码如下:

在页面中阅读

mep.speech.list.url <-"http://www.europarl.europa.eu/meps/en/1186/seeall.html?type=CRE&leg=5"
speech.list.data<-try(readLines(mep.speech.list.url),silent=TRUE)

查找网址

mep.speech.list<-speech.list.data
mep.speech.lines<-grep("href",mep.speech.list)
mep.speech.list<-mep.speech.list[mep.speech.lines]
mep.speech.lines<-grep("target",mep.speech.list)
mep.speech.list<-mep.speech.list[mep.speech.lines]
mep.speech.list<-mep.speech.list[-length(mep.speech.list)]    

干净的网址

mep.speech.list.end<-regexpr("target",mep.speech.list)
mep.speech.list<-substr(mep.speech.list,1, mep.speech.list.end)
mep.speech.list<-gsub("\t","",mep.speech.list)
mep.speech.list<-gsub('<a href=\"',"",mep.speech.list)
mep.speech.list<-gsub('\" target',"",mep.speech.list)
mep.speech.list<-gsub('\" targe',"",mep.speech.list)    
mep.speech.list<-gsub('\" targ',"",mep.speech.list)
mep.speech.list<-gsub('\" tar',"",mep.speech.list)
mep.speech.list<-gsub('\" ta',"",mep.speech.list)
mep.speech.list<-gsub('\" t',"",mep.speech.list)    
mep.speech.list<-mep.speech.list[5:length(mep.speech.list)]
print(mep.speech.list)

最佳答案

“查看更多”按钮执行一些执行 AJAX 调用的 javascript。您可以使用 Selenium 自动化浏览器并提取链接:

require(RSelenium)
appURL <- "http://www.europarl.europa.eu/meps/en/1186/seeall.html?type=CRE&leg=5"
RSelenium::startServer()
remDr <- remoteDriver()
remDr$open()
remDr$navigate(appURL)
remDr$findElement("id", "seemore")$clickElement()
Sys.sleep(5)
jsScript <-"var hrefs = new Array();
$('#content_left .listcontent a').each(function(){
hrefs.push($(this).attr('href'));
});
return hrefs;"

appHREF <- remDr$executeScript(jsScript)[[1]]
> head(appHREF)
[1] "http://www.europarl.europa.eu/sides/getDoc.do?pubRef=-//EP//TEXT+CRE+20040504+ITEM-008+DOC+XML+V0//EN&language=en&query=INTERV&detail=2-205"
[2] "http://www.europarl.europa.eu/sides/getDoc.do?pubRef=-//EP//TEXT+CRE+20040422+ITEM-005+DOC+XML+V0//EN&language=en&query=INTERV&detail=4-069"
[3] "http://www.europarl.europa.eu/sides/getDoc.do?pubRef=-//EP//TEXT+CRE+20040422+ITEM-005+DOC+XML+V0//EN&language=en&query=INTERV&detail=4-122"
[4] "http://www.europarl.europa.eu/sides/getDoc.do?pubRef=-//EP//TEXT+CRE+20040421+ITEM-008+DOC+XML+V0//EN&language=en&query=INTERV&detail=3-207"
[5] "http://www.europarl.europa.eu/sides/getDoc.do?pubRef=-//EP//TEXT+CRE+20040330+ITEM-004+DOC+XML+V0//EN&language=en&query=INTERV&detail=2-074"
[6] "http://www.europarl.europa.eu/sides/getDoc.do?pubRef=-//EP//TEXT+CRE+20040330+ITEM-004+DOC+XML+V0//EN&language=en&query=INTERV&detail=2-099"
> 

关于javascript - R 网页抓取 - HTML 中的隐藏文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23061951/

相关文章:

javascript - 添加变换比例后,我无法将部分设置为居中

r - 在 .pdf 文件上提取图像会产生异常的垂直条纹

javascript - AngularJS $filter 日期未按预期工作

javascript - 适合对象 : get resulting dimensions

javascript - 拖动时 jQueryUI 可排序项目位置不正确

javascript - 外部 javascript 在模拟器中工作但在 ios 设备中不起作用

javascript - 特定日期的倒计时

javascript - 通过 W3C DOM 替换整个 HTML 文档还有哪些其他选项?

r - 如何将列表与环境一起放置?

r - 与此 R 聚合等效的 pandas 函数