我想從https://irelandsgreatwardead.ie/the-archive/使用rvest.
library(rvest)
library(dplyr)
page <- read_html(x = "https://irelandsgreatwardead.ie/the-archive/")
table <- page %>%
html_nodes("table") %>%
html_table(fill = TRUE) %>%
as.data.frame()
這有效,但僅適用于前 10 名士兵。在源代碼中,我也只能看到前10名士兵的資訊。任何關于如何獲得與其他士兵的行的幫助將不勝感激!
謝謝,祝你有美好的一天!
uj5u.com熱心網友回復:
這是RSelenium解決方案,
您可以遍歷頁面提取表并加入上一個表。
首先啟動瀏覽器,
library(RSelenium)
driver = rsDriver(browser = c("firefox"))
remDr <- driver[["client"]]
remDr$navigate(url)
第 1 部分:從第一頁中提取表格并存盤在df,
df = remDr$getPageSource()[[1]] %>%
read_html() %>%
html_table()
df = df[[1]]
#removing last row which is non-esstential
df = df[-nrow(df),]
第 2 部分:回圈瀏覽第 2 頁到第 5 頁
for(i in 2:5){
#Building xpath for each page
xp = paste0('//*[@id="table_1_paginate"]/span/a[', i, ']')
cc <- remDr$findElement(using = 'xpath', value = xp)
cc$clickElement()
# Three second gap is given for the webpage to load
Sys.sleep(3)
df1 = remDr$getPageSource()[[1]] %>%
read_html() %>%
html_table()
df1 = df1[[1]]
df1 = df1[-nrow(df1),]
#Joining previous table `df` and present table `df1`
df = rbind(df, df1)
}
第 3 部分:回圈閱讀第 6 到 628 頁的其余部分
在xpath剩下的頁面是一樣的。因此,我們必須重復此代碼塊 623 次才能從剩余頁面中獲取表。
for (i in 1:623) {
x = i
cc <- remDr$findElement(using = 'xpath', value = '//*[@id="table_1_paginate"]/span/a[4]')
cc$clickElement()
Sys.sleep(3)
df1 = remDr$getPageSource()[[1]] %>%
read_html() %>%
html_table()
df1 = df1[[1]]
df1 = df1[-nrow(df1),]
df = rbind(df, df1)
}
現在我們有了df所有士兵的資訊。
uj5u.com熱心網友回復:
library(RSelenium)
driver = rsDriver(browser = c("firefox"))
remDr <- driver[["client"]]
url <- 'https://irelandsgreatwardead.ie/the-archive/'
remDr$navigate(url)
# Locate the next page link
webElem <- remDr$findElement(using = "css", value = "a[data-dt-idx='3'")
# Click that link
webElem$clickElement()
# Get that table
remDr$getPageSource()[[1]] %>%
read_html() %>%
html_table()
你的 for 回圈需要從 3 的值開始(那是第二頁!)。在第二頁上它變成 4,等等。但它永遠不會超過 5。因為它的“設計”方式,所以你會回圈 3:5,然后在 5 時每次保持在 5。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/365341.html
標籤:r 网页抓取 html-table 背心 硒
上一篇:需要一個如何抓取這個網站的例子
