使用RStudio实现SpaceX招聘岗位Web scraping及数据处理任务
R语言实现SpaceX招聘数据爬取与统计方案
前置依赖
需提前安装以下工具包:rvest(网页爬取)、dplyr(数据清洗)、knitr(表格输出)、stringr(字符串处理)
任务1:爬取全量招聘岗位并输出前10行数据
# 加载依赖包 library(rvest) library(dplyr) library(knitr) library(stringr) # 请求招聘页面 target_url <- "https://www.spacex.com/careers/?department=" page_content <- read_html(target_url) # 提取岗位字段生成数据框 job_nodes <- page_content %>% html_elements(".career-table .career-row") job_df <- tibble( 岗位名称 = job_nodes %>% html_element(".job-title") %>% html_text2(), 所属部门 = job_nodes %>% html_element(".job-department") %>% html_text2(), 工作地点 = job_nodes %>% html_element(".job-location") %>% html_text2(), 发布日期 = job_nodes %>% html_element(".job-posted-date") %>% html_text2() ) %>% filter(!is.na(岗位名称)) # 输出前10行表格 knitr::kable(head(job_df, 10), caption = "SpaceX招聘岗位前10条数据预览")
注:若官网前端结构更新,需对应调整
html_elements和html_element中的CSS选择器参数。
任务2:按首个工作地点统计各州岗位数量
# 数据处理与统计 state_job_count <- job_df %>% mutate( # 拆分多地点,取第一个地点 first_location = str_split(工作地点, ";|,|,", n = 2) %>% sapply(`[`, 1), # 提取美国州2位大写缩写 state_code = str_extract(first_location, "\\b[A-Z]{2}\\b") ) %>% # 过滤无效州值,分组统计数量 filter(!is.na(state_code)) %>% group_by(state_code) %>% summarise(岗位数量 = n()) %>% arrange(desc(岗位数量)) # 输出统计结果表格 knitr::kable(state_job_count, caption = "美国各州SpaceX招聘岗位数量统计")
内容的提问来源于stack exchange,提问作者Lauren Walker
相关产品推荐
相关产品推荐

