我正在尝试通过在谷歌地图上抓取平均谷歌评论和地址来学习网络抓取。但是我有几个问题希望得到帮助:
这家公司有6个网点。但只有 5 个有评论。
所以当我运行以下代码来提取出口名称和评级时,我得到了 6 个名称和 5 个评级数据。所以我无法将商店名称与收视率相匹配
问题是因为没有评论的出口没有我的代码可以使用的 aria-label 类。
我是否可以提取信息以使评分与评论相匹配?
pacman::p_load(rvest,
xml2,
RSelenium)
rmDr=rsDriver(browser = "firefox", port=4443L)$client
myclient= rmDr
myclient$navigate("https://www.google.com/maps/search/attea/@1.3586881,103.8165833,12z/data=!3m1!4b1")
html_obj <- myclient$getPageSource(header = TRUE)[[1]] %>% read_html()
names <- html_obj %>% html_elements(".hfpxzc")%>%
html_attr("aria-label")
name_outlet<-as.data.frame(names)
stars_numrev <- html_obj %>% html_elements(".ZkP5Je")%>%
html_attr("aria-label")
stars_numrev_outlet<-as.data.frame(stars_numrev)
很抱歉问题列表很长。很长一段时间以来,我一直对抓取感兴趣,而且我主要从网络资源中学习。对有用指南的任何帮助或指示将不胜感激。干杯!
对于您的示例,我可以使用以下方法提取地址:
html_obj %>%
html_node("div.RcCsl:nth-child(3) > button:nth-child(1) > div:nth-child(1) > div:nth-child(3) > div:nth-child(1)") %>%
html_text()
[1] "2500 Chestnut Ave, Glenview, IL 60026"
我在几个不同的位置尝试过它,所以它似乎相当稳健。类名
.Io6YTe
对于不同的位置似乎也是相同的,因此它可能也可以用作 html 节点。在从页面中提取 html 之前,您可能需要添加一个等待页面加载的步骤。
我还在研究问题 3,如果我有任何发现,我会编辑这个答案。滚动到底部的最终目标是什么?也许有另一种方法可以达到这个目标?