如何从亚马逊的客户资料页面中提取产品 link
How to pull a product link from customer profile page on Amazon
我正在尝试使用 R 的 RVEST 包从客户资料页面获取产品link
我已经参考了各种关于堆栈溢出的问题,包括此处(),但每次尝试时,我都无法 return 得到正确的结果。
例如在此个人资料页面上:
我希望能够 return 这个 link,最终目标是提取产品 ID:B01A51S9Y2
library(dplyr)
library(rvest)
library(stringr)
library(httr)
library(rvest)
# get url
url='https://www.amazon.com/gp/profile/amzn1.account.AETT6GZORFV55BFNOAVFDIJ75QYQ/ref=cm_cr_dp_d_gw_tr?ie=UTF8'
x <- GET(url, add_headers('user-agent' = 'test'))
page <- read_html(x)
page %>%
html_nodes("[class='a-link-normal profile-at-product-box-link a-text-normal']") %>%
html_text()
#I did a test to see if i could even find the href, with no luck
test <- page %>%
html_nodes("#a-page") %>%
html_text()
grepl("B01A51S9Y2",test)
感谢@Qharr 关于 Rselenium 的提示。这很有用,但仍然不确定如何提取 link 或 asin。库(RSelenium)
driver <- rsDriver(browser=c("chrome"), port = 4574L, chromever = "77.0.3865.40")
rd <- driver[["client"]]
rd$open()
rd$navigate("https://www.amazon.com/gp/profile/amzn1.account.AETT6GZORFV55BFNOAVFDIJ75QYQ/ref=cm_cr_arp_d_gw_btm?ie=UTF8")
prod <- rd$findElement(using = "css", '.profile-at-product-box-link')
prod$getElementText
这真的return没什么
添加了get属性href,可以获取link
prod <- rd$findElements(using = "css selector", '.profile-at-product-box-link')
for (link in 1:length(prod)){
print(prod[[link]]$getElementAttribute('href'))
}
该信息是从页面发出的 POST 请求动态提取的,您的 rvest 初始请求未捕获。此后续请求 returns json 格式管理 asins 的内容、产品链接等.....
您可以在开发工具 F12 的网络选项卡中找到它。按 F5 刷新页面然后检查网络流量:
这不是一个简单的 POST 模仿请求,我只想使用 RSelenium 让页面呈现,然后使用 css 选择器
.profile-at-product-box-link
收集一个 webElements 集合,您可以循环并从中提取 href 属性。
我正在尝试使用 R 的 RVEST 包从客户资料页面获取产品link
我已经参考了各种关于堆栈溢出的问题,包括此处(
例如在此个人资料页面上:
我希望能够 return 这个 link,最终目标是提取产品 ID:B01A51S9Y2
library(dplyr)
library(rvest)
library(stringr)
library(httr)
library(rvest)
# get url
url='https://www.amazon.com/gp/profile/amzn1.account.AETT6GZORFV55BFNOAVFDIJ75QYQ/ref=cm_cr_dp_d_gw_tr?ie=UTF8'
x <- GET(url, add_headers('user-agent' = 'test'))
page <- read_html(x)
page %>%
html_nodes("[class='a-link-normal profile-at-product-box-link a-text-normal']") %>%
html_text()
#I did a test to see if i could even find the href, with no luck
test <- page %>%
html_nodes("#a-page") %>%
html_text()
grepl("B01A51S9Y2",test)
感谢@Qharr 关于 Rselenium 的提示。这很有用,但仍然不确定如何提取 link 或 asin。库(RSelenium)
driver <- rsDriver(browser=c("chrome"), port = 4574L, chromever = "77.0.3865.40")
rd <- driver[["client"]]
rd$open()
rd$navigate("https://www.amazon.com/gp/profile/amzn1.account.AETT6GZORFV55BFNOAVFDIJ75QYQ/ref=cm_cr_arp_d_gw_btm?ie=UTF8")
prod <- rd$findElement(using = "css", '.profile-at-product-box-link')
prod$getElementText
这真的return没什么
添加了get属性href,可以获取link
prod <- rd$findElements(using = "css selector", '.profile-at-product-box-link')
for (link in 1:length(prod)){
print(prod[[link]]$getElementAttribute('href'))
}
该信息是从页面发出的 POST 请求动态提取的,您的 rvest 初始请求未捕获。此后续请求 returns json 格式管理 asins 的内容、产品链接等.....
您可以在开发工具 F12 的网络选项卡中找到它。按 F5 刷新页面然后检查网络流量:
这不是一个简单的 POST 模仿请求,我只想使用 RSelenium 让页面呈现,然后使用 css 选择器
.profile-at-product-box-link
收集一个 webElements 集合,您可以循环并从中提取 href 属性。