Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Css 为“查找正确的xpath”;“下一步”;谷歌搜索上的按钮_Css_R_Xpath - Fatal编程技术网

Css 为“查找正确的xpath”;“下一步”;谷歌搜索上的按钮

Css 为“查找正确的xpath”;“下一步”;谷歌搜索上的按钮,css,r,xpath,Css,R,Xpath,我使用的是R,但似乎无法为“下一步”提取正确的xpath 谷歌搜索上的按钮。例如,一个人搜索某物,滚动到底部,然后单击数字列表右侧的“下一步” 这是我可以从Chrome的“inspect”中提取的内容: 但是当我尝试使用xpath时,得到一个空白列表。CSS选择器小工具为我提供了以下信息: //*+[contains(concat( " ", @class, " " ), concat( " ", "ch", " " ))]//span 但同样的问题。要在R代码或“可点击”中有用,我知道它来自

我使用的是R,但似乎无法为“下一步”提取正确的
xpath
谷歌搜索上的按钮。例如,一个人搜索某物,滚动到底部,然后单击数字列表右侧的“下一步”

这是我可以从Chrome的“inspect”中提取的内容:

但是当我尝试使用
xpath
时,得到一个空白列表。CSS选择器小工具为我提供了以下信息:

//*+[contains(concat( " ", @class, " " ), concat( " ", "ch", " " ))]//span
但同样的问题。要在R代码或“可点击”中有用,我知道它来自
href
部分。单击“下一步”按钮的正确路径是什么


代码引导:

library(RSelenium) # run in docker

remDr <- remoteDriver(port = 4445L, browserName = "chrome")
remDr$open()
remDr$navigate("https://books.google.com/")
books <- remDr$findElement(using = "css", "[name = 'q']")
books$sendKeysToElement(list("NHL books", key = "enter"))

# Clicks on all 10 links of first result page
bookElem <- remDr$findElements(using = "xpath",
                       "//h3[@class = 'LC20lb']//parent::a")
links <- sapply(bookElem, function(bookElem){
  bookElem$getElementAttribute("href")
})

# Gets stuff I want from every search result
big_list <- lapply(links, function(link) {

  # Navigate to each link
  remDr$navigate(link)

  # Do various things
  if (...) {
  ...
  } else {
  ...
  }

})
library(RSelenium)#在docker中运行

remDr您是否尝试按id查找元素

remDr$findElement(使用=“id”,“pnnext”)

我发现在可能的情况下,通过唯一值查找元素总是更安全的。

当您要求使用XPath解决方案时,我会补充这一点

这对我很有用:

nextButton <- remDr$findElement("xpath", "//*[@id = 'pnnext']")


你是如何进行搜索的?您是否使用Selenium输入搜索关键字?在google中搜索某个内容,点击enter,然后想点击next,但为了获得搜索结果,您如何进行搜索?您的代码是什么导致您尝试点击“下一步”按钮的?或者你是在浏览器中搜索,然后试图根据该URL进行抓取,比如我在Firefox中搜索“网页抓取”时遇到的混乱情况:因为我刚刚完成了一个项目,需要搜索页面并进行抓取,我使用RSelenium通过其选择器查找搜索框,输入文本,按enter键,然后进行抓取,使用Firefox调试驱动程序对其进行调试。搜索一个短语,按enter键,从页面上的每个链接中删除一些内容,然后单击“下一步”在此后的每个页面上执行同样的操作。如果这是一个愚蠢的方法,让我知道!(实际上,尽管如此)。我基本上不知道脚本中的“next”元素应该放在哪里,但现在我知道
/*[@id=“pnnext”]
将用于命中next,只是不在实际的抓取代码中
nextButton <- remDr$findElement("xpath", "//*[@id = 'pnnext']")
remDr$navigate("https://books.google.com/")
books <- remDr$findElement(using = "css", "[name = 'q']")
books$sendKeysToElement(list("NHL books", key = "enter"))

bookElem <- remDr$findElements(using = "xpath",
                               "//h3[@class = 'LC20lb']//parent::a")
links <- sapply(bookElem, function(bookElem){
  bookElem$getElementAttribute("href")
})


nextButton <- remDr$findElement("xpath", "//*[@id = 'pnnext']")
nextButton$clickElement()

remDr$screenshot(TRUE)
remDr$getCurrentUrl()

"https://www.google.com/searchq=NHL+books&tbm=bks&ei=M9y2XL2HBPDjkgWklqXoDg&start=10&
sa=N&ved=0ahUKEwj97OjL09bhAhXwsaQKHSRLCe0Q8NMDCIUB&biw=1020&bih=694&dpr=1"