首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Selenium从HTML获取信息

使用Selenium从HTML获取信息
EN

Stack Overflow用户
提问于 2019-09-17 01:26:55
回答 1查看 45关注 0票数 0

我正在尝试使用R从亚马逊网站提取一些文本。可能是因为亚马逊使用了ajax技术,所以无法使用xml_attrs()直接提取数据。

代码语言:javascript
运行
复制
library(rvest) 
library(RSelenium)
Produktlink<-'https://www.amazon.de/AmazonBasics-CW190423-Mikrofaser-Reinigungst%C3%BCcher-24-St%C3%BCck/dp/B009FUF6DM/ref=zg_bs_automotive_10/262-2805299-5636062?_encoding=UTF8&psc=1&refRID=TK56QZCA9CH997338J1B'
Name<-xml_attrs(xml_child(xml_child(xml_child(xml_child(xml_child(xml_child(xml_child(xml_child(xml_child(xml_child(read_html(pageSource), 2), 1), 46), 8), 8), 3), 1), 1), 1), 1))[["class"]]

这就是为什么我认为我需要Docker和Selenium:

代码语言:javascript
运行
复制
remDr <- RSelenium::remoteDriver(remoteServerAddr = "192.168.99.100", port = 4445L)
remDr$open(silent = T)

remDr$navigate(Produktlink)

但我找不到,例如,产品名称搜索:

代码语言:javascript
运行
复制
webElem <- remDr$findElement(using = "class", "a-size-large")
webElem$getElementAttribute("name")

有人能帮我吗?或者有人知道从网站上提取文本的其他方法吗?

诚挚的问候

EN

回答 1

Stack Overflow用户

发布于 2019-09-17 15:50:08

我不认为你需要RSelenium。我找到的产品标题如下:

代码语言:javascript
运行
复制
library(rvest) 
library(xml2)
library(stringr)

Produktlink <- 'https://www.amazon.de/AmazonBasics-CW190423-Mikrofaser-Reinigungst%C3%BCcher-24-St%C3%BCck/dp/B009FUF6DM/ref=zg_bs_automotive_10/262-2805299-5636062?_encoding=UTF8&psc=1&refRID=TK56QZCA9CH997338J1B'

html <- read_html(Produktlink)

html %>%
  xml2::xml_find_all("//span[@id = 'productTitle']") %>%
  xml_text %>%
  str_replace_all('\n','') %>%
  trimws()

结果:

代码语言:javascript
运行
复制
[1] "AmazonBasics Mikrofaser-Reinigungstücher, 24 Stück"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57961712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档