rvest - select 只有 class 下的某些 href
rvest - select only certain hrefs under class
Objective
抓取指向零售店位置的文件路径向量,同时忽略超链接的电话号码。我刚开始使用 html 元素。
我试过的
library(rvest)
library(tidyverse)
library(xml2)
store.paths <- read_html("https://www.walmart.com/store/directory/al/alabaster") %>%
html_nodes(xpath = '//*[@class="store-directory-container"]') %>%
html_nodes("a") %>%
html_attr('href')
产生
[1] "/store/4756" "tel:205-624-6229" "/store/423" "tel:205-620-0360"
而我的期望输出是
[1] "/store/4756" "/store/423"
我试过用storeBanner
替换store-directory-container
,结果是空的。
谢谢!
看起来您想要的 a
标签也有 class storeBanner
而电话链接没有。用
很容易抓住它们
store.paths <- read_html("https://www.walmart.com/store/directory/al/alabaster") %>%
html_elements("a.storeBanner") %>%
html_attr('href')
我在这种情况下还使用了 CSS 选择器语法,因为它更容易使用推荐的 html_elements
函数,因为 html_nodes
已被软弃用。您不能只用“storeBanner”替换“store-directory-container”,因为“a”标签位于“store-directory-container”下方,但在“storeBanner”的情况下,它是该元素,而不是子元素该元素的。
你可以在tag后添加一个带有storeBanner的xpath
store.paths <- read_html("https://www.walmart.com/store/directory/al/alabaster") %>%
html_nodes(xpath = '//*[@class="store-directory-container"]') %>%
html_nodes("a") %>%
html_nodes(xpath = '//*[@class="storeBanner"]') %>%
html_attr('href')
store.paths
[1] "/store/4756" "/store/423"
Objective
抓取指向零售店位置的文件路径向量,同时忽略超链接的电话号码。我刚开始使用 html 元素。
我试过的
library(rvest)
library(tidyverse)
library(xml2)
store.paths <- read_html("https://www.walmart.com/store/directory/al/alabaster") %>%
html_nodes(xpath = '//*[@class="store-directory-container"]') %>%
html_nodes("a") %>%
html_attr('href')
产生
[1] "/store/4756" "tel:205-624-6229" "/store/423" "tel:205-620-0360"
而我的期望输出是
[1] "/store/4756" "/store/423"
我试过用storeBanner
替换store-directory-container
,结果是空的。
谢谢!
看起来您想要的 a
标签也有 class storeBanner
而电话链接没有。用
store.paths <- read_html("https://www.walmart.com/store/directory/al/alabaster") %>%
html_elements("a.storeBanner") %>%
html_attr('href')
我在这种情况下还使用了 CSS 选择器语法,因为它更容易使用推荐的 html_elements
函数,因为 html_nodes
已被软弃用。您不能只用“storeBanner”替换“store-directory-container”,因为“a”标签位于“store-directory-container”下方,但在“storeBanner”的情况下,它是该元素,而不是子元素该元素的。
你可以在tag后添加一个带有storeBanner的xpath
store.paths <- read_html("https://www.walmart.com/store/directory/al/alabaster") %>%
html_nodes(xpath = '//*[@class="store-directory-container"]') %>%
html_nodes("a") %>%
html_nodes(xpath = '//*[@class="storeBanner"]') %>%
html_attr('href')
store.paths
[1] "/store/4756" "/store/423"