标签: rselenium

Rselenium - Popup

我想使用RSelenium和Firefox浏览器从网站下载文件.我正确地做了一切(导航,选择正确的元素并写下我想要的东西); 现在我点击"下载"按钮,然后打开一个firefox弹出窗口,询问我是否要下载文件或"打开..."其他内容.

不幸的是,由于隐私限制,我不能写一个例子.

我的问题是:如何切换到弹出窗口/警报并在需要时单击"确定"?

我尝试了以下方法但没有成功:

remDrv$acceptAlert()     -> tells me: NoAlertOpenError  
remDrv$executeScript("driver.switchTo().alert().accept()")
Run Code Online (Sandbox Code Playgroud)

我也试过这个方法

remDrv$getWindowHandles()
Run Code Online (Sandbox Code Playgroud)

但即使弹出窗口是打开的,该命令只返回一个窗口(开头一个,而不是弹出窗口),因此我无法使用:

remDrv$switchToWindow()
Run Code Online (Sandbox Code Playgroud)

切换到弹出窗口.

有任何想法吗?谢谢

selenium r popupwindow rselenium

4
推荐指数
1
解决办法
1737
查看次数

RSelenium UnknownError - 使用谷歌浏览器的java.lang.IllegalStateException

我正在运行基于RSelenium Basics CRAN页面的以下脚本:

library(RSelenium)
startServer(args = c("-port 4455"), log = FALSE, invisible = FALSE)
remDr <- remoteDriver(browserName = "chrome")
remDr$open()
Run Code Online (Sandbox Code Playgroud)

这会产生以下错误:

Exception in thread "main" java.net.BindException: Selenium is already running on port 4444. Or some other service is.
 at org.openqa.selenium.server.SeleniumServer.start(SeleniumServer.java:492)
 at org.openqa.selenium.server.SeleniumServer.boot(SeleniumServer.java:305)
 at org.openqa.selenium.server.SeleniumServer.main(SeleniumServer.java:245)
 at org.openqa.grid.selenium.GridLauncher.main(GridLauncher.java:64)
Run Code Online (Sandbox Code Playgroud)

根据GitHub上这个对话的评论,我修改了我的startServer()命令:

startServer(args = c("-port 4455"), log = FALSE, invisible = FALSE)
Run Code Online (Sandbox Code Playgroud)

然后我在控制台中收到以下错误:

Error:   Summary: UnknownError
 Detail: An unknown server-side error occurred while processing the command.
 class: java.lang.IllegalStateException
Run Code Online (Sandbox Code Playgroud)

弹出的Java提示中出现此错误: …

java selenium r rselenium

4
推荐指数
1
解决办法
3664
查看次数

RSelenium - 使用phantom.js下载文件

使用RSelenium我可以使用以下公式通过Firefox浏览器从网页下载文件:

csv = remDr$findElement(using = 'css selector', "a[ng-click*=download]")
remDr$executeScript("arguments[0].click();", list(csv))
Run Code Online (Sandbox Code Playgroud)

当我尝试使用phantomjs浏览器复制该过程时,没有任何反应.猜猜也许没有设置下载目录,我试过:

remDr$extraCapabilities = makeFirefoxProfile(list(browser.download.dir = "/download/path"))
Run Code Online (Sandbox Code Playgroud)

仍然没有任何反应 感谢一个想法,让这一切发挥作用.


编辑.

我应该在安装过程中添加以下报告,这可能相关或不相关,但它似乎不会停止页面连接或元素选择:

> pJS = phantom()
[ERROR - 2016-03-17T17:54:08.914Z] GhostDriver - main.fail - {"line":85,"sourceURL":"phantomjs://code/main.js","stack":"global code@phantomjs://code/main.js:85:56"}

  phantomjs://platform/console++.js:263 in error
Run Code Online (Sandbox Code Playgroud)

r phantomjs rselenium

4
推荐指数
1
解决办法
1437
查看次数

R:Rvest - 得到了我不想要的隐藏文字

我在网上搜索这个网页:

http://www.falabella.com.pe/falabella-pe/category/cat40536/Climatizacion?navAction=push
Run Code Online (Sandbox Code Playgroud)

我只需要产品中的信息:"品牌","产品名称","价格".

在此输入图像描述

我可以得到它,但我也从其他用户的类似产品的横幅中获取信息.我不需要它.

但是当我转到页面的源代码时,我看不到那些产品.我认为它是通过javascript或其他东西拉出来的:

在此输入图像描述

问题1: 如何在进行网络抓取时阻止此信息? 这增加了我不需要的产品.但是在源代码中看不到这一部分.

问题2:当提取价格"precio1"时,我将其作为第一个元素:"\n\t\t\t\tSubtotal InternetS/. 0"我在代码源中也看不到它.怎么不刮呢?

library(RSelenium)
library(rvest)
#start RSelenium
checkForServer()
startServer()
remDr <- remoteDriver()
remDr$open()

#navigate to your page
remDr$navigate("http://www.falabella.com.pe/falabella-pe/category/cat40536/Climatizacion?navAction=push")


page_source<-remDr$getPageSource()


Climatizacion_marcas1 <- html(page_source[[1]])%>%
        html_nodes(".marca") %>%
        html_nodes("a") %>%
        html_attr("title")


Climatizacion_producto1 <- html(page_source[[1]])%>%
        html_nodes(".detalle") %>%
        html_nodes("a") %>%
        html_attr("title")


Climatizacion_precio1 <- html(page_source[[1]])%>%
        html_nodes(".precio1") %>%
        html_text()
Run Code Online (Sandbox Code Playgroud)

r rselenium rvest

3
推荐指数
1
解决办法
1922
查看次数

在Linux/Windows中使用RSelenium的Tor浏览器

希望使用我的Linux机器使用RSelenium和Tor来返回Tor IP(将Firefox作为Tor浏览器).这对于Python是可行的,但在R中遇到问题.任何人都可以使用它吗?也许您可以在Windows/Linux中共享您的解决方案.

# library(devtools)
# devtools::install_github("ropensci/RSelenium")
library(RSelenium)

RSelenium::checkForServer()
RSelenium::startServer() 

binaryExtension <- paste0(Sys.getenv('HOME'),"/Desktop/tor-browser_en-US/Browser/firefox")
remDr <- remoteDriver(dir = binaryExtention)

remDr$open()
remDr$navigate("http://myexternalip.com/raw")
remDr$quit()
Run Code Online (Sandbox Code Playgroud)

Error in callSuper(...) : object 'binaryExtention' not found正在返回错误.

对于社区参考,此Selenium代码在Windows中使用Python3:

from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.firefox.firefox_profile import FirefoxProfile
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

from os.path import expanduser # Finds user's user name on Windows

# Substring inserted to overcome r requirement in FirefoxBinary 
binary = FirefoxBinary(r"%s\\Desktop\\Tor Browser\\Browser\\firefox.exe"  % (expanduser("~")))
profile = FirefoxProfile(r"%s\\Desktop\\Tor Browser\\Browser\\TorBrowser\\Data\\Browser\\profile.default" % (expanduser("~")))

driver = …
Run Code Online (Sandbox Code Playgroud)

python selenium r tor rselenium

3
推荐指数
1
解决办法
1021
查看次数

如何为R设置rselenium?

"那时候一切都好多了"......

因为firefox 49(?)你不能使用rselenium包不再直截了当.我已经搜索了整个互联网,找到了一个简单的如何手动设置rselenium但没有发现任何相关和最新的.

有人可以提供我和其他所有其他人没有线索的简单操作手册吗?喜欢:

  1. 下载XY
  2. 打开AB

所以我可以运行如下代码

require(RSelenium)

remDr <- remoteDriver(remoteServerAddr = "localhost", port = 4444L, 
browserName = "firefox")
remDr$open()
Run Code Online (Sandbox Code Playgroud)

r rselenium

3
推荐指数
2
解决办法
6065
查看次数

使用 RSelenium 获取元素文本

我已经为以下几行代码苦苦挣扎了几个小时,但我似乎仍然没有接近解决方案。我的代码如下:

#create a list of all the question elements on the page
questions <- remDr$findElements(using = 'xpath', "//div[@class='question-text']")

#get the first question element in the list
question <- questions[1]

#get the text of the question element
question$getElementText()
Run Code Online (Sandbox Code Playgroud)

当我使用 RStudio 进行调试时,似乎“问题”列表中的所有“问题”元素都正确填充了;'question' 项被正确填充了列表中的第一个 'question' 元素;但是下一行代码的许多变体,旨在获取问题元素中的文本,似乎都失败了,给出了以下错误:

Error in evalq({ : attempt to apply non-function
Run Code Online (Sandbox Code Playgroud)

错误可能来自代码的不同部分,但可能性很小,因为注释掉该行似乎可以让其他一切正常工作。

我将非常感谢你们和女孩们可能提供的任何帮助。我正在使用 RSelenium 在 R 中编程 - 正如您可能会说的,我是 R 的新手,尽管我在其他环境中使用 Selenium 的经验非常有限。

预先感谢您的想法!

selenium r rselenium

3
推荐指数
1
解决办法
5464
查看次数

使用R填写html表单并下载生成的文件

我花了一天时间在互联网上搜索如何做到这一点的例子,但是我仍然在旋转,并且可以使用一点方向.我是html的新手,具有基本的R编码经验,并且对任何其他编码语言的经验很少.

我有一个500多个(可能更多)气象站的列表,我想从这个网站下载FW13格式的数据(https://fam.nwcg.gov/fam-web/kcfast/html/wxhmenu.htm).在浏览器中,您填写表单,提交表单,它将开始将FW13文件下载到我的默认下载文件夹.

我的目标是使用R填写html表单,提交它,然后接受将结果文件下载到定义的位置.表单本身由文本和单选按钮组成.以下是单个查询的示例:

站ID:020207

开课日期:2000-01-01

截止日期:2017-12-31

观察类型:每小时

计划选项:立即运行

我沿着RCurl和rvest包的兔子洞走下去,甚至开始试用rSelenium.我见过的大多数例子都是直接从网站上抓取信息,但我只想接受下载生成的文件.

如果我只能提交单个请求并下载单个文件,我相信我可以弄清楚如何使用站点ID列表来循环,以实现我所需要的.

我为没有任何示例代码而道歉.我所有的试验都是在黑暗中盲目拍摄,我甚至不确定我是否正在使用正确的包装来完成这项任务.任何帮助或方向非常感谢!

r rcurl rselenium rvest

3
推荐指数
1
解决办法
824
查看次数

使用 RSelenium 时缩小网站而不更改页面大小/分辨率

我想缩小 RSelenium 遥控器,但这很难找到解决方案。我知道

library(RSelenium)
driver <- rsDriver()
remDr <- driver[["client"]]
remDr$navigate("https://www.google.com/")
webElem <- remDr$findElement("css", "html")
webElem$sendKeysToElement(list(key = "control", "-"))              ## Does not work
webElem$sendKeysToElement(list(key = "control", key = "subtract")) ## Does not work
Run Code Online (Sandbox Code Playgroud)

浏览器是Chrome。

selenium r selenium-webdriver rselenium

3
推荐指数
1
解决办法
821
查看次数

如何使用 R 中的网络抓取从 Power BI 仪表板获取表格

我正在使用 进行数据提取任务R。数据是在Power BI仪表板中分配的,所以获取起来非常麻烦。我在这里找到了解决方案:

使用 R 抓取网站的 Power BI 仪表板

但我不确定如何在页面中导航以获取组件并提取表格。我的代码如下:

library(wdman)
library(RSelenium)
library(xml2)
library(selectr)
library(tidyverse)
library(rvest)

# using wdman to start a selenium server
remDr <- rsDriver(
  port = 4445L,
  browser = "firefox"
)
#remDr$open()
remDr <- remoteDriver(port = 4445L,browser = "firefox")

# open a new Tab on Chrome
remDr$open()

# navigate to the site you wish to analyze
report_url <- "https://app.powerbi.com/view?r=eyJrIjoiOGI5Yzg2MGYtZmNkNy00ZjA5LTlhYTYtZTJjNjg2NTY2YTlmIiwidCI6ImI1NDE0YTdiLTcwYTYtNGUyYi05Yzc0LTM1Yjk0MDkyMjk3MCJ9"
remDr$navigate(report_url)

# fetch the data
data_table <- read_html(remDr$getPageSource()[[1]]) %>%
  querySelector("div.pivotTable")
Run Code Online (Sandbox Code Playgroud)

虽然硒进程工作,但我不知道如何获取我的表:

在此输入图像描述

蓝色箭头显示了我想要的表格,然后我需要移动到其他页面来提取剩余的表格。但我想如果第一页能做到的话,其他页面也会一样。

非常感谢!

r rselenium rvest

3
推荐指数
1
解决办法
2050
查看次数

标签 统计

r ×10

rselenium ×10

selenium ×5

rvest ×3

java ×1

phantomjs ×1

popupwindow ×1

python ×1

rcurl ×1

selenium-webdriver ×1

tor ×1