【问题标题】:RSelenium web scraping always returns NullRSelenium 网页抓取总是返回 Null
【发布时间】:2016-04-12 15:17:22
【问题描述】:

我是网络抓取的新手,我正在尝试从 IMDb 获取电影预算数据。这是我的代码:

budget=vector()
for(i in 1:50){
remDr$navigate('http://www.imdb.com/search/title?sort=moviemeter,asc&start=1&title_type=feature&year=2011,2011')
webElems=remDr$findElements('css selector','.wlb_lite+ a')
webElems[[i]]$clickElement()
b=remDr$findElements('css selector','.txt-block:nth-child(11)')
b_text=unlist(lapply(b, function(x){x$getElementText()}))
if(is.null(b_text)==T){
  budget=c(budget,'NULL')
  }

if(is.null(b_text)==F){budget=c(budget,'NULL')}
print(b_text)
}

每页有 50 部电影。我想一一点击每个链接,收集相应的预算数据。如果我不循环运行代码,则代码运行良好。但是当我在循环中运行它时,代码总是返回'Null'。恐怕这是因为页面没有完全在循环中加载。我尝试使用“setTimeout”和“setImplicitWaitTimeout”命令,但效果不佳。有人可以帮我吗?

【问题讨论】:

    标签: web-scraping imdb rselenium


    【解决方案1】:

    试试

    Sys.sleep(time in seconds)

    对于每个循环而不是 setTimeout。

    这解决了像你这样的问题。

    【讨论】:

    • 谢谢!我尝试了 Sys.sleep,它确实有效!问题是 R 是否有办法检测网页是否加载?
    • 我猜它在 RSelelnium 中很直观。一旦您导航到一个页面,并且只有在加载网页后才会执行下一个代码行。但是 Sys.sleep 提供了额外的时间。我猜!!我不确定
    猜你喜欢
    • 1970-01-01
    • 2019-04-24
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多