如何使用rvest进行web抓取表元素?

qgzx9mmu  于 2023-04-18  发布在  其他
关注(0)|答案(1)|浏览(168)

我期待从这个carrier link刮数据,我使用的rvest包在R和伊夫刮一些顶部的信息在网页上使用下面的代码:

library(rvest)

url <- "https://www.aaacooper.com/pwb/Transit/ProTrackResults.aspx?ProNum=241939875&AllAccounts=true"
page <- read_html(url)

# Extract the table on the page
table <- page %>% html_nodes("table") %>% .[[2]] %>% html_table()

# Print the table
View(table)

这将产生以下信息:

但是,我希望以表格格式从“跟踪信息”表中检索信息:

wfveoks0

wfveoks01#

下面是一个mundate方法:

library(rvest)
sess <- session("https://www.aaacooper.com/pwb/Transit/ProTrackResults.aspx?ProNum=241939875&AllAccounts=true")
html_table(sess)[[9]]
# # A tibble: 10 × 3
#    Date       Time  Description                                               
#    <chr>      <chr> <chr>                                                     
#  1 2022-06-24 13:02 Delivered To Consignee In BRADENTON, FL                   
#  2 2022-06-24 04:22 Shipment arrived at destination Service Center   TAMPA, FL
#  3 2022-06-24 03:02 Shipment departed ORLANDO Service Center                  
#  4 2022-06-23 06:34 Shipment arrived at ORLANDO Service Center                
#  5 2022-06-22 22:54 Shipment departed DOTHAN Service Center                   
#  6 2022-06-21 22:52 Shipment arrived at DOTHAN Service Center                 
#  7 2022-06-21 10:36 Shipment departed HOUSTON Service Center                  
#  8 2022-06-21 03:15 Shipment arrived at HOUSTON Service Center                
#  9 2022-06-20 19:59 Shipment departed WESLACO Service Center                  
# 10 2022-06-20 12:21 Shipment Picked Up From Shipper In WESLACO, TX

[[9]]的使用是基于查看html_table()返回的所有表,没有任何东西可以保证这个数字会持续存在。
查找表的一个更好的方法是查找特定的属性/标题/名称/ID,最好使用SelectorGadget查找。
稍微更详细地查看URL页面可以发现该表的 parent 节点具有class="tracingInformation",这表明我们可以这样做:

html_element(sess, ".tracingInformation") %>%
  html_children() %>%
  html_table()
# [[1]]
# # A tibble: 10 × 3
#    Date       Time  Description                                               
#    <chr>      <chr> <chr>                                                     
#  1 2022-06-24 13:02 Delivered To Consignee In BRADENTON, FL                   
#  2 2022-06-24 04:22 Shipment arrived at destination Service Center   TAMPA, FL
#  3 2022-06-24 03:02 Shipment departed ORLANDO Service Center                  
#  4 2022-06-23 06:34 Shipment arrived at ORLANDO Service Center                
#  5 2022-06-22 22:54 Shipment departed DOTHAN Service Center                   
#  6 2022-06-21 22:52 Shipment arrived at DOTHAN Service Center                 
#  7 2022-06-21 10:36 Shipment departed HOUSTON Service Center                  
#  8 2022-06-21 03:15 Shipment arrived at HOUSTON Service Center                
#  9 2022-06-20 19:59 Shipment departed WESLACO Service Center                  
# 10 2022-06-20 12:21 Shipment Picked Up From Shipper In WESLACO, TX

我是如何发现的。我使用Firefox,我相信其他浏览器有相同或非常相似的键/标签/名称。
1.在浏览器中打开该url。
1.加载后,点击F12(或进入浏览器开发控制台的任何键)。
1.选择“Pick an element”并选择所需的表格中的单元格。(在FF中,这是“Inspector”左侧的一个小按钮。)
1.查找单元格上方对<table>的第一个引用。(就像在这个例子中一样,我认为id="AAACooperMasterPage_bodyContent_grdViewTraceInfo"有点晦涩/自动化),再往上走一点,直到你找到一个清晰的id=class=。在这个例子中,我发现我们想要的表被另一个带有class="tracingInformation"的表所包围。
1.在html_element(..)中使用它。

相关问题