我想编写一个函数,从 GitHub 项目的贡献者页面中提取一些贡献者数据。例如:https://github.com/easystats/report/graphs/contributors
如何使用 R 提取用户名、提交次数、添加次数和删除次数?
这是我使用
rvest
(https://github.com/tidyverse/rvest)进行网络抓取的尝试:
library(rvest)
contribs <- read_html("https://github.com/easystats/report/graphs/contributors")
section <- contribs %>% html_elements("section")
section
#> {xml_nodeset (0)}
contribs$node
#> <pointer: 0x0000027d9b9e9f10>
contribs$doc
#> <pointer: 0x0000027d9e03d140>
创建于 2023-01-29,使用 reprex v2.0.2
但我认为我没有得到预期的结果。
但是,我更喜欢一个可以使用现有 R 包或 GitHub API (https://github.com/r-lib/gh) 的解决方案。
但这有可能吗?
在开发者工具的网络部分找到他们的API
library(tidyverse)
library(httr2)
"https://github.com/easystats/report/graphs/contributors-data" %>%
request() %>%
req_headers("x-requested-with" = "XMLHttpRequest",
accept = "appliacation/json") %>%
req_perform() %>%
resp_body_json(simplifyVector = TRUE) %>%
unnest(everything()) %>%
group_by(username = str_remove(path, "/")) %>%
summarise(across(a:c, sum))
# A tibble: 21 x 4
username a d c
<chr> <int> <int> <int>
1 DominiqueMakowski 203778 148154 325
2 IndrajeetPatil 15082 10513 159
3 LukasWallrich 1 1 1
4 bwiernik 1371 156 11
5 cgeger 1 1 1
6 drfeinberg 127 23 1
7 dtoher 26 26 1
8 etiennebacher 127 162 7
9 fkohrt 1 1 1
10 grimmjulian 2 2 1
11 humanfactors 22 23 4
12 jdtrat 1 1 1
13 m-macaskill 33 31 2
14 mattansb 1009 603 14
15 mutlusun 265 4 4
16 pkoaz 3 2 1
17 rempsyc 3427 2938 14
18 strengejacke 5129 38164 223
19 vincentarelbundock 5 0 1
20 webbedfeet 85 85 2
21 wjschne 2 2 1