R 提高嵌套sappy效率
我想知道是否有更有效的方法来实现我的目标。我现在正在写一个蜘蛛算法来每天早上获取新闻报道,我想过滤首页的初始链接来忽略我不关心的东西 您可以使用以下代码生成可复制的示例:R 提高嵌套sappy效率,r,performance,algorithm,R,Performance,Algorithm,我想知道是否有更有效的方法来实现我的目标。我现在正在写一个蜘蛛算法来每天早上获取新闻报道,我想过滤首页的初始链接来忽略我不关心的东西 您可以使用以下代码生成可复制的示例: library(RCurl) library(XML) opts = list( proxy = "***.***.***.***", #insert your proxy proxyusername = "domain\\username", proxypassword = "password", proxy
library(RCurl)
library(XML)
opts = list(
proxy = "***.***.***.***", #insert your proxy
proxyusername = "domain\\username",
proxypassword = "password",
proxyport = ****) #insert your port number
links <- 'http://www.cnn.com'
xpaths <- c('//ul[@id="us-menu"]//a', '//div[@id="cnn_maint1lftf"]//a', '//div[@id="cnn_maintt2bul"]//a', '//div[@id="cnn_maintoplive"]//a')
response <- getURL('www.cnn.com', .opts=opts)
doc <- htmlParse(response)
for (xpath in xpaths) {
li <- getNodeSet(doc, xpath)
links <- c(links, sapply(li, xmlGetAttr, 'href'))
}
links <- links[!duplicated(links)]
links <- links[-1]
库(RCurl)
库(XML)
opts=列表(
proxy=“*****.**.**”,#插入您的代理
proxyusername=“域\\用户名”,
proxypassword=“password”,
proxyport=**)#插入您的端口号
links在这种情况下可以使用正则表达式。重要的是,你的坏单词列表中没有任何“特殊”正则表达式字符,如句点或其他标点符号。但是如果是这样的话,你可以把它们粘贴在一起,在一个grep中完成所有的事情。我们只是通过将所有单词与“or”操作符粘贴在一起来创建正则表达式
bad.words <- c('video', 'travel', 'living', 'health',
'ireport', 'bleacher', 'showbiz', 'mcafee')
re <- paste0("\\b(",paste(bad.words, collapse="|"),")\\b")
links <- links[ !grepl(re, links) ]
bad.words你的例子不太容易复制。对象opts
未在getURL()中找到Ah,谢谢@RichardScriven。我对问题进行了编辑以纠正这一点。这正是我所寻找的解决方案类型。谢谢
bad.words <- c('video', 'travel', 'living', 'health',
'ireport', 'bleacher', 'showbiz', 'mcafee')
re <- paste0("\\b(",paste(bad.words, collapse="|"),")\\b")
links <- links[ !grepl(re, links) ]