微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PDF 抓取:获取公司和子公司表

如何解决PDF 抓取:获取公司和子公司表

我正在尝试抓取此 PDF,其中包含有关公司子公司的信息。我看过很多使用 R 包 Tabulizer 的帖子,但不幸的是,由于某些原因,这在我的 Mac 上不起作用。由于 Tabulizer 使用 Java 依赖项,我尝试安装不同版本的 Java (6-13),然后重新安装软件包,但仍然无法正常工作(当我运行 extract_tables 时,R 会话中止)。

我需要从第 19 页开始抓取整个 pdf 并构建一个显示公司名称及其子公司的表格。在 pdf 中,名称以任何字母/数字/符号开头,而子公司以单点或双点开头。

所以我尝试使用 pdftoolspdftables 包。下面的代码提供了一个类似于第 19 页上的表格:

library(pdftools)
library(pdftables)
library(tidyverse)

tt = pdf_text("~/DATA/978-1-912036-41-7-Who Owns Whom UK-Ireland-Volume-1.pdf")

df <- tt[19]
df2 <- strsplit(df,'  ')
 
df3 <-as.data.frame(do.call(cbind,df2)) %>% 
 filter(V1!="") %>% 
 mutate(V2=str_split_fixed(V1,"England . ",2)) %>% 
 mutate(V3=str_split_fixed(V1,"England",2)) %>% 
 select(V2,V3,V1) %>% 
 mutate(V1=ifelse(V1==V3,"",V1),V3=ifelse(V3==V2,V3)) %>% 
 select(V3,V2,V1) %>% 
 mutate_at(c("V1"),funs(lead),n = 1 ) %>% 
 mutate_at(c("V3"),funs(lag),n = 1 ) %>% 
 unite(V4,V1,sep = "",remove = FALSE)

我相信有一个更复杂的功能可以更巧妙地完成这项工作。例如,将 '\n''\r'strsplit 一起使用:

 df2 <- strsplit(df,'\n') 
 df3 <- do.call(cbind.data.frame,df2)

任何比我更有经验的人都可以建议我如何刮这张桌子吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。