我們正在從https://nbpa.com/agents/directory中提取聯系資訊。頁面上沒有表格,而是在<div>s內有<p>元素:
我們可以用:
抓住這個元素agents_url <- "https://nbpa.com/agents/directory"/span>
agents_page <- agents_url %>% read_html()
agents_page_elements <- agents_page %>% html_nodes('div.accordion-inner'>)
agents_page_elements[/span>1]
agents_page_elements[1] %> % html_nodes('p')
我們希望將其轉換為一個1行資料框架:
我們希望將其轉換為一個1行資料框架。
Cell Email Professional Credentials:
(123) 456-7890 firstlast@email. com "NBA認證球員代理..."。
這有可能做到嗎?這個網路搜刮的挑戰在于,網站上的每個accordion-inner div都有不同的p元素。有些有Cell:和Email:,有些有Education:、Address:,等等。這因手風琴內頁而異。如果我們能把每個單獨的節點變成一個1行的資料框架,那么我們就可以用plyr::rbind.fill()把所有的資料框架系結在一起。
uj5u.com熱心網友回復:
我們可以使用read.dcf后獲得作為text
new < - agents_page_elements[1] %>;%
html_nodes('p') %>%
html_text()
as.data.frame(讀。 dcf(textConnection(new))
輸出
單元格電子郵件專業資格證書
1 (240) 668-4241 barry. aberdeen@tributesports.com NBA認證球員代理,FIBA認證球員代理,WNBA認證球員代理
對于多個元素,使用map
library(purrr)
library(dplyr)
library(stringr)
out <- map_dfr(agents_page_elements, ~ {)
新 <- .x %>%
html_nodes('p') %>% .
html_text() %>%
str_replace_all("
s*", " ")
if(length(new) > 0) { >。
as.data.frame(read. dcf(textConnection(new))
} else NULL
})
輸出
> dim(out)
[1] 455 9
> head(out, 2)
牢房電子郵件 專業證書 職稱
1 (240) 668-4241 barry. aberdeen@tributesports. com NBA認證球員代理, FIBA認證球員代理, WNBA認證球員代理<NA>
2 (281) 773-7339 < NA> 德州律師協會編號。24050197|Wisconsin Bar No. 1045470 律師
公司名稱教育地址辦公室國際
1 <NA> <NA> < NA> <NA> <NA>
2 Adams & Associates, LLC University of Southern California B.S. |休斯頓大學 - 工商管理碩士 |威斯康星大學 -法學博士。 D. <NA> < NA> <NA>
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/333266.html
標籤:

