r - rvest - 从不需要的文本中删除段落
问题描述
我想从下面的 rvest 代码的输出中删除很多段落
library(rvest)
link <- 'https://www.duedil.com/company/gb/02666908/yorwaste-limited/financials'
doc <- read_html(link) %>% html_nodes("script:contains('js-financials-component')") %>% html_text()
基本上,我只想留下我想将其输出为 json 格式的文本。我不知道我可以从哪里开始,请有人给我建议吗?非常感谢
{
companyName: {"name":"Yorwaste Limited"},
numAccounts: 1,
accounts: [{"title":"Summary","rows":[{"label":"Reporting Period (Months)","description":null,"chartable":false,"date":"31 Mar 2018","currency":null,"percentage":false,"values":[{"date":"31 Mar 2018","timestamp":1522454400,"suffix":null,"value":12,"formattedValue":"12","delta":null}]},{"label":"Consolidated Accounts","description":"Financial statements of the parent (company) and its subsidiaries are presented as those of a single economic entity.","chartable":false,"date":"31 Mar 2018","currency":null,"percentage":false,"values":[{"date":"31 Mar 2018","timestamp":1522454400,"suffix":null,"value":"Y","formattedValue":"Y","delta":null}]},{"label":"Number of Employees","description":null,"chartable":false,"date":"31 Mar 2018","currency":null,"percentage":false,"values":[{"date":"31 Mar 2018","timestamp":1522454400,"suffix":null,"value":318,"formattedValue":"318","delta":64.77}]},{"label":"Turnover","description":"Revenue generated from business activities.","chartable":true,"date":"31 Mar 2018","currency":"GBP","percentage":false,"values":[{"date":"31 Mar 2018","timestamp":1522454400,"suffix":"GBP","value":40328232,"formattedValue":"40,328,232","delta":3.67}]},{"label":"EBITDA","description":"Earnings before interest, tax, depreciation and amortization.","chartable":true,"date":"31 Mar 2018","currency":"GBP","percentage":false,"values":[{"date":"31 Mar 2018","timestamp":1522454400,"suffix":"GBP","value":2834874,"formattedValue":"2,834,874","delta":62.78}]},{"label":"Post-tax Profit","description":"Profit generated after taxation.","chartable":true,"date":"31 Mar 2018","currency":"GBP","percentage":false,"values":[{"date":"31 Mar 2018","timestamp":1522454400,"suffix":"GBP","value":885230,"formattedValue":"885,230","delta":52.17}]},{"label":"Total Assets","description":"The value of all assets on the Balance Sheet.","chartable":true,"date":"31 Mar 2018","currency":"GBP","percentage":false,"values":[{"date":"31 Mar 2018","timestamp":1522454400,"suffix":"GBP","value":40264952,"formattedValue":"40,264,952","delta":25.58}]},{"label":"Net Assets","description":"Total Assets less Total Liabilities.","chartable":true,"date":"31 Mar 2018","currency":"GBP","percentage":false,"values":[{"date":"31 Mar 2018","timestamp":1522454400,"suffix":"GBP","value":10613963,"formattedValue":"10,613,963","delta":9.1}]},{"label":"Return on Capital Employed (%)","description":"Operating Profit expressed as a percentage of average Capital Employed.","chartable":true,"date":"31 Mar 2018","currency":null,"percentage":true,"values":[{"date":"31 Mar 2018","timestamp":1522454400,"suffix":"%","value":6.97,"formattedValue":"6.97","delta":null}]},{"label":"Debt to Capital (%)","description":"Total Liabilities expressed as a percentage of Total Assets.","chartable":true,"date":"31 Mar 2018","currency":null,"percentage":true,"values":[{"date":"31 Mar 2018","timestamp":1522454400,"suffix":"%","value":73.64,"formattedValue":"73.64","delta":null}]}]}],
growth: [{"title":"Summary","rows":[{"label":"Reporting Period (Months)","description":null,"chartable":false,"date":"31 Mar 2018","currency":null,"percentage":false,"latest":{"date":"31 Mar 2018","timestamp":1522454400,"suffix":null,"value":12,"formattedValue":"12"},"cagrs":{"year1":null,"cagr3":null,"cagr5":null,"cagr10":null}},{"label":"Consolidated Accounts","description":"Financial statements of the parent (company) and its subsidiaries are presented as those of a single economic entity.","chartable":false,"date":"31 Mar 2018","currency":null,"percentage":false,"latest":{"date":"31 Mar 2018","timestamp":1522454400,"suffix":null,"value":"Y","formattedValue":"Y"},"cagrs":{"year1":null,"cagr3":null,"cagr5":null,"cagr10":null}},{"label":"Number of Employees","description":null,"chartable":false,"date":"31 Mar 2018","currency":null,"percentage":false,"latest":{"date":"31 Mar 2018","timestamp":1522454400,"suffix":null,"value":318,"formattedValue":"318"},"cagrs":{"year1":null,"cagr3":null,"cagr5":null,"cagr10":null}},{"label":"Turnover","description":"Revenue generated from business activities.","chartable":true,"date":"31 Mar 2018","currency":"GBP","percentage":false,"latest":{"date":"31 Mar 2018","timestamp":1522454400,"suffix":"GBP","value":40328232,"formattedValue":"40,328,232"},"cagrs":{"year1":null,"cagr3":null,"cagr5":null,"cagr10":null}},{"label":"EBITDA","description":"Earnings before interest, tax, depreciation and amortization.","chartable":true,"date":"31 Mar 2018","currency":"GBP","percentage":false,"latest":{"date":"31 Mar 2018","timestamp":1522454400,"suffix":"GBP","value":2834874,"formattedValue":"2,834,874"},"cagrs":{"year1":null,"cagr3":null,"cagr5":null,"cagr10":null}},{"label":"Post-tax Profit","description":"Profit generated after taxation.","chartable":true,"date":"31 Mar 2018","currency":"GBP","percentage":false,"latest":{"date":"31 Mar 2018","timestamp":1522454400,"suffix":"GBP","value":885230,"formattedValue":"885,230"},"cagrs":{"year1":null,"cagr3":null,"cagr5":null,"cagr10":null}},{"label":"Total Assets","description":"The value of all assets on the Balance Sheet.","chartable":true,"date":"31 Mar 2018","currency":"GBP","percentage":false,"latest":{"date":"31 Mar 2018","timestamp":1522454400,"suffix":"GBP","value":40264952,"formattedValue":"40,264,952"},"cagrs":{"year1":null,"cagr3":null,"cagr5":null,"cagr10":null}},{"label":"Net Assets","description":"Total Assets less Total Liabilities.","chartable":true,"date":"31 Mar 2018","currency":"GBP","percentage":false,"latest":{"date":"31 Mar 2018","timestamp":1522454400,"suffix":"GBP","value":10613963,"formattedValue":"10,613,963"},"cagrs":{"year1":null,"cagr3":null,"cagr5":null,"cagr10":null}},{"label":"Return on Capital Employed (%)","description":"Operating Profit expressed as a percentage of average Capital Employed.","chartable":true,"date":"31 Mar 2018","currency":null,"percentage":true,"latest":{"date":"31 Mar 2018","timestamp":1522454400,"suffix":"%","value":6.97,"formattedValue":"6.97"},"cagrs":{"year1":null,"cagr3":null,"cagr5":null,"cagr10":null}},{"label":"Debt to Capital (%)","description":"Total Liabilities expressed as a percentage of Total Assets.","chartable":true,"date":"31 Mar 2018","currency":null,"percentage":true,"latest":{"date":"31 Mar 2018","timestamp":1522454400,"suffix":"%","value":73.64,"formattedValue":"73.64"},"cagrs":{"year1":null,"cagr3":null,"cagr5":null,"cagr10":null}}]}]
解决方案
您可以简单地下载网页的源内容并使用正则表达式提取必要的片段:
library(httr)
library(stringr)
r <- GET('https://www.duedil.com/company/gb/02666908/yorwaste-limited/financials')
q <- str_match(r, "new Widget\\([\\s\\S]*?(\\{\\s*companyName:[\\s\\S]*?\\})\\)")
d <- q[2]
使用正则表达式解析 HTML 的Disclamer
推荐阅读
- r - 有没有办法在R中自动左对齐stargazer输出的第一列?
- airflow - 安装(python3)气流不会创建气流目录
- python - 如何向下迭代一列名称以使用每个名称的出现次数填充新列
- regex - Yara 规则 - 正则表达式 - 匹配通配符
- scala - Scala 在聚合上处理除以零
- javascript - 当通过reactjs加载其他页面时,如何在nodejs中提供登录页面?
- java - 如何将反向输入与原始输入进行比较?
- google-apps-script - 文件夹 createFile folder.createFile(theblob) 没有根据技术规范返回文件对象?
- android - 如何使用 Flutter / Dart 打印彩色调试消息以显示彩色 Android Studio 控制台输出?
- python - 如何比较两个列表中的单词并使用python将匹配的单词提取为单独的列表