我正在尝试使用R从亚马逊网站提取一些文本。可能是因为亚马逊使用了ajax技术,所以无法使用xml_attrs()直接提取数据。
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:
remDr <- RSelenium::remoteDriver(remoteServerAddr = "192.168.99.100", port = 4445L)
remDr$open(silent = T)
remDr$navigate(Produktlink)但我找不到,例如,产品名称搜索:
webElem <- remDr$findElement(using = "class", "a-size-large")
webElem$getElementAttribute("name")有人能帮我吗?或者有人知道从网站上提取文本的其他方法吗?
诚挚的问候
发布于 2019-09-17 15:50:08
我不认为你需要RSelenium。我找到的产品标题如下:
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()结果:
[1] "AmazonBasics Mikrofaser-Reinigungstücher, 24 Stück"https://stackoverflow.com/questions/57961712
复制相似问题