【发布时间】:2020-01-01 06:20:11
【问题描述】:
我可以使用 rvest 获取我想要的列。然后,我想将所有列组合成一个数据框,这样我就可以得到一个包含公司名称、部门、地址、网址和电话的公司列表。
#这是我的代码:
url_base <- "https://www.yellowpages.my/listing/results.php?keyword=&where=selangor&screen=%d"
library(rvest)
library(purrr)
library(dplyr)
#抓取前两页:
map_df(1:2, function(i) {
cat(".")
pg <- read_html(sprintf(url_base, i))
data.frame(
name=html_text(html_nodes(pg, "div.cbp-vm-company >a")),
sector=html_text(html_nodes(pg, "div.cbp-vm-address > a")),
address=html_text(html_nodes(pg, "div.cbp-vm-address")),
url=html_attr(html_nodes(pg, ".cbp-vm-company > a"),'href'),
phone=html_attr(html_nodes(pg, ".cbp-vm-cta > span"),'data-content'),
stringsAsFactors=FALSE)
}) -> List
但是,有些问题我无法解决。你能帮忙吗?
-
电话:我可以知道如何从数据框中排除“NA”吗?
-
url:还有其他页面没有此特定列的信息(例如“https://www.yellowpages.my/listing/results.php?keyword=&where=selangor&screen=10946”)。我可以为这个特定的列加上 NA 吗?这样我就可以将它与其他列结合起来
-
name:某些页面(例如“https://www.yellowpages.my/listing/results.php?keyword=&where=selangor&screen=10946”)必须使用“html_nodes("div.cbp-vm -companytext")" 提取公司名称而不是 "html_nodes("div.cbp-vm-company >a")"。我该如何处理这个问题?
【问题讨论】: