我正在尝试使用rsDriver函数运行RSelenium,但是当我运行时,出现
rD <- rsDriver()
一条消息告诉我我需要更新版本的Chrome:
> rD <- rsDriver()
checking Selenium Server versions:
BEGIN: PREDOWNLOAD
BEGIN: DOWNLOAD
BEGIN: POSTDOWNLOAD
checking chromedriver versions:
BEGIN: PREDOWNLOAD
BEGIN: DOWNLOAD
BEGIN: POSTDOWNLOAD
checking geckodriver versions:
BEGIN: PREDOWNLOAD
BEGIN: DOWNLOAD
BEGIN: POSTDOWNLOAD
checking phantomjs versions:
BEGIN: PREDOWNLOAD
BEGIN: DOWNLOAD
BEGIN: POSTDOWNLOAD
[1] "Connecting to remote server"
Selenium message:session not created: This version of ChromeDriver only supports Chrome version 74
(Driver info: chromedriver=74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Mac OS X 10.14.3 x86_64)
Could not open chrome browser.
Client error message: …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用该RSelenium软件包自动执行登录网站并对其执行某些过程的过程.我已经能够登录,点击这里和那里的按钮,但我坚持在jQuery页面上执行一个功能.有一个下拉框,使用jQuery函数填充其中的数据.我不确定如何执行此功能.页面源(包括jQuery函数)如下:
<input disabled="disabled" id="stuff" name="stuff" style="width:100%" type="text" /><script>
jQuery(function(){jQuery("#stuff").kendoDropDownList({"change":disableNext,"dataSource":{"transport":{"read":{"url":"/StuffInfo/GetStuff","data":filterStuff},"prefix":""},"serverFiltering":true,"filter":[],"schema":{"errors":"Errors"}},"autoBind":false,"optionLabel":"Select court...","cascadeFrom":"state"});});
</script>
<script>
Run Code Online (Sandbox Code Playgroud)
下拉列表的名称是stuff,我正在使用以下代码来访问它:
library("RSelenium")
startServer()
mybrowser <- remoteDriver()
mybrowser$open()
mybrowser$navigate("<URL>")
wxChooseStuff <- mybrowser$findElement(using='id',"stuff")
Run Code Online (Sandbox Code Playgroud)
当我尝试执行以下命令时:
wxChooseStuff$clickElement()
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Error: Summary: ElementNotVisible
Detail: An element command could not be completed because the element is not visible on the page.
class: org.openqa.selenium.ElementNotVisibleException
Run Code Online (Sandbox Code Playgroud)
我希望点击会自动填充下拉列表中的数据.
任何关于如何使用jQuery函数的指针RSelenium都将非常感激.
即使我可以jQuery使用另一个包执行该功能,那也没关系.我想执行此函数并单击该元素.
PS - 我不是网络开发者,如果我问一个愚蠢的问题,请原谅我.
编辑:
我根据建议尝试了以下代码:
在这个命令中,我只包括script标签中包含的完整文本,用"单引号(')替换所有双引号()
mybrowser$executeScript(script = "jQuery(function(){jQuery('#stuff').kendoDropDownList({'change':disableNext,'dataSource':{'transport':{'read':{'url':'/StuffInfo/GetStuff','data':filterStuff},'prefix':''},'serverFiltering':true,'filter':[],'schema':{'errors':'Errors'}},'autoBind':false,'optionLabel':'Select …Run Code Online (Sandbox Code Playgroud) 我试图让R在这个网页http://cti.voa.gov.uk/cti/上用预定义的文本(例如BN1 1NA)完成"通过邮政编码搜索"字段,前进到下一页并抓取结果4列表,根据邮政编码,可以在多个页面上.为了使其更复杂,"改进指标"不是文本字段,而是图像文件(如果使用邮政编码BN1 3HP进行搜索,则会看到).我希望此列包含0或1,具体取决于图像是否存在.
最终,我追随一个很好的数据框架,它反映了屏幕上的4列.
我试图修改这个问题的建议去做我上面描述的没有运气的事情,说实话我试图破译这个问题.
我意识到R可能不是最适合我需要做的事情,但这些都是我可以使用的.任何帮助将不胜感激.
我正在使用Rselenium导航到网页.以下代码正在这样做.我没有提供网址,因为我在需要vpn连接的公司中使用网址:
RSelenium::startServer()
require(RSelenium)
remDr <- remoteDriver()
remDr$navigate("some url")
Run Code Online (Sandbox Code Playgroud)
导航到网页后,在html源代码中我有下表:
<font size="2">
<table border="1">
<tbody>
<tr>
<td> item1 </td>
<td> 0 </td>
<td> 0.05 </td>
<td> 2.43 </td>
<td align="center"> Pct </td>
<td align="center"> 1 </td>
</tr>
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
现在问题是如何提取此表的内容?请假设url不存在,否则我可以使用XML函数:readHTMLTable(remDr $ getCurrentUrl()).但由于某些原因,这不起作用.我只需要使用remoteDriver句柄(remDr).非常感谢你的时间
我在RSelenium中使用以下代码来打开浏览器.关闭浏览器,甚至通过运行remDr $ close()关闭处理程序后,该端口仍在使用中.我必须去终端并手动终止进程,以便相同的端口可用.是否有任何自动化方式使RSelenium在完成抓取后使端口自由?
所以这是我的代码:
library(RSelenium)
rD <- rsDriver(verbose = FALSE,port=4444L)
remDr <- rD$client
remDr$close()
Run Code Online (Sandbox Code Playgroud)
谢谢
我在Windows 7上使用R的最新版本.
我想用RSelenium这样的方法并行运行很多测试,我的问题是:
RSelenium测试的方法是什么?假设我想进行1000次测试,每步需要1小时.逐个运行测试需要花费很多时间(每天24次测试,因此总共需要42天).我知道如何使用doParallel和foreach包在我的机器上并行运行测试:并行运行RSelenium,但有时,这还不够.我想并行运行大约100个测试.我尝试使用Azure Batch,但在启动selenium服务器时在某些节点上遇到很多错误.
更具体地说,我写了dockerfile:
FROM rocker/r-base:latest
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
libxml2-dev \
libcurl4-openssl-dev \
libssl-dev \
gnupg2 \
libfftw3-dev \
libtiff-dev \
libx11-dev \
libcairo2-dev \
libxt-dev \
firefox
#RUN add-apt-repository -y ppa:mozillateam/firefox-next
## Install Java
RUN echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" \
| tee /etc/apt/sources.list.d/webupd8team-java.list \
&& echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" \
| tee -a /etc/apt/sources.list.d/webupd8team-java.list \
&& apt-key adv --keyserver keyserver.ubuntu.com --recv-keys …Run Code Online (Sandbox Code Playgroud) 如何使用RSeleniumWebDriver 手动滚动到页面的底部(或顶部)?我有一个元素只有在页面上可见时才可用.
我试图拉内容https://www.askebsa.dol.gov/epds/default.asp用两种rvest或RSelenium但当JavaScript页面开始搜索框没有找到指导?将所有这些内容整合到一个简单的CSV文件中会很棒.
之后,从https://www.askebsa.dol.gov/mewaview/View/Index/6219这样的个别文件中提取数据似乎是可能的..但我也很感激这样做的干净建议.谢谢
我试图从这个站点使用R来刮取数据:http: //www.soccer24.com/kosovo/superliga/results/#
我可以做以下事情:
library(rvest)
doc <- html("http://www.soccer24.com/kosovo/superliga/results/")
Run Code Online (Sandbox Code Playgroud)
但我很难知道如何获取数据.这是因为网站上的实际数据似乎是由Javascript生成的.我能做的是
html_text(doc)
Run Code Online (Sandbox Code Playgroud)
但是这给了很长时间的奇怪文本模糊(这确实包含了数据,但是散布着奇怪的代码,而且根本不清楚我将如何解析它.
我要提取的是所有比赛的比赛数据(日期,时间,球队,结果).此站点不需要其他数据.
任何人都可以提供一些关于如何从该网站提取数据的提示吗?
我想创建一个可以从Trip Advisor中抓取一些数据的爬虫.理想情况下,它将 (a)识别要爬行的所有地点的链接, (b)收集每个地点所有景点的链接, (c)收集所有评论的目的地名称,日期和评级.我现在想集中讨论(a)部分.
这是我开始的网站:http: //www.tripadvisor.co.nz/Tourism-g255104-New_Zealand-Vacations.html
这里有问题:该链接提供了前10个目的地,如果您再点击"查看更多热门目的地",它将展开列表.它似乎使用javascript函数来实现这一点.不幸的是,我不熟悉javascript,但我认为下面的块可能会提供有关它如何工作的线索:
<div class="morePopularCities" onclick="ta.call('ta.servlet.Tourism.showNextChildPage', event, this)">
<img id='lazyload_2067453571_25' height='27' width='27' src='http://e2.tacdn.com/img2/x.gif'/>
See more popular destinations in New Zealand </div>
Run Code Online (Sandbox Code Playgroud)
我已经为R找到了一些有用的网页编写软件包,比如rvest,RSelenium,XML,RCurl,但是其中只有RSelenium似乎能够解决这个问题,尽管如此,我仍然无法使用它出.
这是一些相关的代码:
tu = "http://www.tripadvisor.co.nz/Tourism-g255104-New_Zealand-Vacations.html"
RSelenium::startServer()
remDr = RSelenium::remoteDriver(browserName = "internet explorer")
remDr$open()
remDr$navigate(tu)
# remDr$executeScript("JS_FUNCTION")
Run Code Online (Sandbox Code Playgroud)
最后一行应该在这里做,但我不确定我需要在这里调用什么函数.
一旦我设法扩展这个列表,我将能够以与解决(b)部分相同的方式获取每个目的地的链接,我想我已经解决了这个问题(对于那些感兴趣的人):
library(rvest)
tu = "http://www.tripadvisor.co.nz/Tourism-g255104-New_Zealand-Vacations.html"
tu = html_session(tu)
tu %>% html_nodes(xpath='//div[@class="popularCities"]/a') %>% html_attr("href")
[1] "/Tourism-g255122-Queenstown_Otago_Region_South_Island-Vacations.html"
[2] "/Tourism-g255106-Auckland_North_Island-Vacations.html"
[3] "/Tourism-g255117-Blenheim_Marlborough_Region_South_Island-Vacations.html"
[4] "/Tourism-g255111-Rotorua_Rotorua_District_Bay_of_Plenty_Region_North_Island-Vacations.html"
[5] "/Tourism-g255678-Nelson_Nelson_Tasman_Region_South_Island-Vacations.html"
[6] "/Tourism-g255113-Taupo_Taupo_District_Waikato_Region_North_Island-Vacations.html"
[7] "/Tourism-g255109-Napier_Hawke_s_Bay_Region_North_Island-Vacations.html"
[8] "/Tourism-g612500-Wanaka_Otago_Region_South_Island-Vacations.html"
[9] "/Tourism-g255679-Russell_Bay_of_Islands_Northland_Region_North_Island-Vacations.html"
[10] …Run Code Online (Sandbox Code Playgroud) r ×10
rselenium ×10
web-scraping ×4
selenium ×3
javascript ×2
rvest ×2
azure-batch ×1
foreach ×1
jquery ×1
phantomjs ×1
xpath ×1