如何从 R 中的 Indeed 求职网站抓取公司评级
How to scrape company ratings from an Indeed job site in R
我从未使用过 HTML 或 CSS 但我知道 R,所以我在网上查看了几种抓取方法,并在 Stack 中查看了如何在 R 中执行此操作。我一直遇到问题从职位列表页面中提取公司评级。我得到 character(0)
,在示例 url 中,该公司的评级为 4.0
。
这是我的尝试:
library(rvest)
library(tidyverse)
library(xml2)
#example URL
url<- "https://www.indeed.com/viewjob?jk=a25a91736b1f7042&tk=1e3q54n49heai800&from=serp&vjs=3&advn=8876452989351355&adid=95236293&sjdu=TDSJNe66qIM3gcXFOG94m--bPylNW2vvO3WAHEKN7JhCAD1FQ-2FXD1gQyElsLNkg6gfXO2CD3rQYOYjO9iXITyFdYOp8tCECkHuDmf3Og8qdMmciGFIv2ahigETjLmuY8uXdLjnQTg4__yOXqHJkA"
page<- read_html(url)
page%>%
rvest::html_nodes("span") %>%
rvest::html_nodes(xpath = '//*[contains(concat( " ", @class, " " ), concat( " ", "ratingsContent", " " ))]')%>%
rvest::html_text()
#Output is
#character(0)
#Where as it should have been 4.0!
任何人都可以告诉我如何获得它,如果公司缺少评级,我该如何 return NA
?谢谢!
您的 xpath 似乎有误。通过查看源文档,您要查找的值包含在具有 itemprop
属性 "ratingValue"
.
的 meta
标签的 content
属性中
以下是一个使用您的问题 url 的可重现的工作示例:
read_html(url) %>%
html_nodes(xpath = "//meta[contains(@itemprop, 'ratingValue')]") %>%
html_attr("content") %>%
unique()
#> [1] "4.0"
我从未使用过 HTML 或 CSS 但我知道 R,所以我在网上查看了几种抓取方法,并在 Stack 中查看了如何在 R 中执行此操作。我一直遇到问题从职位列表页面中提取公司评级。我得到 character(0)
,在示例 url 中,该公司的评级为 4.0
。
这是我的尝试:
library(rvest)
library(tidyverse)
library(xml2)
#example URL
url<- "https://www.indeed.com/viewjob?jk=a25a91736b1f7042&tk=1e3q54n49heai800&from=serp&vjs=3&advn=8876452989351355&adid=95236293&sjdu=TDSJNe66qIM3gcXFOG94m--bPylNW2vvO3WAHEKN7JhCAD1FQ-2FXD1gQyElsLNkg6gfXO2CD3rQYOYjO9iXITyFdYOp8tCECkHuDmf3Og8qdMmciGFIv2ahigETjLmuY8uXdLjnQTg4__yOXqHJkA"
page<- read_html(url)
page%>%
rvest::html_nodes("span") %>%
rvest::html_nodes(xpath = '//*[contains(concat( " ", @class, " " ), concat( " ", "ratingsContent", " " ))]')%>%
rvest::html_text()
#Output is
#character(0)
#Where as it should have been 4.0!
任何人都可以告诉我如何获得它,如果公司缺少评级,我该如何 return NA
?谢谢!
您的 xpath 似乎有误。通过查看源文档,您要查找的值包含在具有 itemprop
属性 "ratingValue"
.
meta
标签的 content
属性中
以下是一个使用您的问题 url 的可重现的工作示例:
read_html(url) %>%
html_nodes(xpath = "//meta[contains(@itemprop, 'ratingValue')]") %>%
html_attr("content") %>%
unique()
#> [1] "4.0"