R语言拍了拍PDF,说你的表格型数据也归我管
上午遇到一个可爱的妹子被实习老板差遣去做苦力,从 PDF 中提取表格转化为 excel。这我当然不能忍,直接抄起键盘抡过去召唤出 R 语言。
数据来源是 https://www.chinacoal-safety.gov.cn/xw/zt/2018zt/mkscnlgl/index.shtml。
install.packages(c("tabulizer", "magrittr", "tibble", "stringr", "dplyr", "openxlsx"))
library(magrittr)
url <- "https://www.chinacoal-safety.gov.cn/xw/zt/2018zt/mkscnlgl/gsfmkscnlgg/201803/P020200310587872852488.pdf"
mat <- tabulizer::extract_tables(url) %>% do.call(rbind, .)
tibble::as_tibble(mat[-1,]) %T>% {colnames(.) <- stringr::str_remove(mat[1,], "\\r")} %>%
dplyr::mutate(dplyr::across(dplyr::everything(), ~stringr::str_remove(., "\\r"))) %>%
openxlsx::write.xlsx("~/Downloads/广西.xlsx")
效果大概是这样:
# A tibble: 19 x 5
序号 煤矿名称 `生产能力(万吨/年)` 安全生产许可证编号 所在地址
<chr> <chr> <chr> <chr> <chr>
1 "1" 南宁市白马矿业投资有限责任公司白马露天煤矿 10 "(桂)MK安许证字〔2008〕001号Y3" "南宁市隆安县"
2 "2" 上林县祥龙矿业实业有限公司那良斜井 9 "(桂)MK安许证字〔2006〕020号Y1" "南宁市上林县"
3 "3" 广西东怀矿业有限责任公司东怀煤矿一号井 150 "(桂)MK安许证字〔2006〕005号Y4B1" "百色市右江区"
4 "4" 广西壮族自治区右江矿务局有限公司保群煤矿 90 "(桂)MK安许证字〔2016〕009号Y1B4" "百色市田东县"
5 "5" 广西壮族自治区右江矿务局塘内矿 60 "(桂)MK安许证字〔2016〕001号Y3B1" "百色市田东县"
6 "6" 广西壮族自治区右江矿务局有限公司水埠矿 45 "(桂)MK安许证字〔2017〕001号" "百色市右江区"
7 "7" 广西壮族自治区右江矿务局有限公司州景矿 33 "(桂)MK安许证字〔2005〕020Y4B2" "百色市田东县"
8 "8" 广西百色那荷矿业有限责任公司那荷煤矿 30 "(桂)MK安许证字[2014]004号Y1B2" "百色市右江区"
9 "9" 广西壮族自治区右江矿务局有限公司公篓矿跃进矿 15 "(桂)MK安许证字〔2005〕023号Y4B2" "百色市右江区"
10 "10" 广西壮族自治区右江矿务局有限公司林场煤矿 15 "(桂)Mk安许证字〔2008〕003号Y3B2" "百色市田阳县"
11 "11" 广西百色福禄矿业有限责任公司福禄煤矿 45 "(桂)Mk安许证字[2019]001号" "百色市右江区"
12 "12" 广西环江下金煤业有限责任公司下金矿 21 "(桂)MK安许证字[2015]002号Y1" "河池市环江毛南族自治县"
13 "13" 广西环江红山朝阳煤业有限公司朝阳矿 15 "(桂)MK安许证字[2005]013号Y4B7" "河池市环江毛南族自治县"
14 "14" 广西罗城伟隆煤业有限公司北陵山煤矿一号井 9 "(桂)MK安许证字[2012]002号Y2B2" "河池市罗城仫佬族自治县"
15 "15" 广西罗城伟隆煤业有限公司北崖煤矿 9 "(桂)MK安许证字[2014]002号Y1B3" "河池市罗城仫佬族自治县"
16 "16" 广西合山煤业有限责任公司三矿(石村二号井) 90 "(桂)MK安许证字[2005]030号Y5" "来宾市合山市"
17 "17" 广西合山煤业有限责任公司河里洛山井 30 "(桂)MK安许证字[2016]007号Y1B2" "来宾市合山市"
18 "18" 宁明县大明矿业有限责任公司大闸露天煤矿 10 "(桂)MK安许可证字 〔2016〕019号Y1B2" "崇左市宁明县"
19 "" 合计(18处) 686 "" ""
上面是广西省的例子,批量处理其它省份也不难,从网页中提取出 url 和省份名称的对应关系就好了。不过剩下的事还是交给这位同学自己吧,毕竟这是她的实习(我当然不会告诉你其实是我懒得弄了)。
由衷地感受到当年能遇到 R 语言真是太幸运了。