【问题标题】:R - web scraping with ''load more'' buttonR - 使用\'\'加载更多\'\'按钮进行网页抓取
【发布时间】:2022-09-24 11:19:42
【问题描述】:

我正在尝试从该网页获取有关啤酒类型和最受欢迎的位置的数据:https://untappd.com/La_Source

我写了代码:

library(rvest)
library(dplyr)

link = \"https://untappd.com/La_Source\"
page = read_html(link)

name = page %>% html_nodes(\".user\") %>% html_text()
place = page %>% html_nodes(\"a:nth-child(4)\") %>% html_text()
user = page %>% html_nodes(\".user\") %>% html_text()

user_links = page %>% html_nodes(\".user\") %>%
  html_attr(\"href\") %>% paste(\"https://untappd.com/\", ., sep=\"\")
  
get_city = function(user_link) {
#  user_link= \'https://untappd.com/user/Linty\'
  user_page = read_html(user_link)
  user_city = user_page %>% html_nodes(\".location\") %>%
    html_text() %>% paste(collapse = \",\")
  return(user_city)
}

city = sapply(user_links, FUN = get_city, USE.NAMES = FALSE)  

#brewery = page %>% html_nodes(\"a:nth-child(3)\") %>% html_text()

Beer = data.frame(name, place,user,city, stringsAsFactors = FALSE)
write.csv(Beer, \"Beer.csv\")

效果非常好,并为我提供了所需的数据。当我尝试通过在页面底部按加载更多按钮 \'\' 来获取更多数据时出现问题。我不确定如何在 R 中做到这一点。有什么建议吗?

  • 请改用RSelenium 之类的东西。这使您可以像使用网络浏览器一样与网页进行交互,并且您可以编写代码来为您按下按钮。另一种选择是使用您的浏览器开发工具来尝试查看数据的来源,看看您是否可以直接获取数据。

标签: r web-scraping load


【解决方案1】:

您可以使用以下代码按“按钮显示更多”:

library(RSelenium)
library(rvest)
url <- "https://untappd.com/La_Source"
shell('docker run -d -p 4445:4444 selenium/standalone-firefox')
remDr <- remoteDriver(remoteServerAddr = "localhost", port = 4445L, browserName = "firefox")
remDr$open()
remDr$navigate(url)

remDr$executeScript("scroll(0,100000);")

web_Obj_Show_More <- remDr$findElement("css selector", '#slide > div.cont.brewery-page > div > div.box.activity > div > a')
web_Obj_Show_More$clickElement()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    • 2018-07-06
    • 2021-07-26
    • 1970-01-01
    • 2018-10-15
    相关资源
    最近更新 更多