我正在尝试为我正在进行的项目构建一个cik查找功能。我找到了以下answer:
require(XML)
require(RCurl)
getCIK = function(ticker) {
stopifnot(is.character(ticker))
uri = "https://www.sec.gov/cgi-bin/browse-edgar"
response = getForm(uri,CIK=ticker,action="getcompany")
html = htmlParse(response)
CIKNode = getNodeSet(html, "//acronym[@title=\"Central Index Key\"][text() = \"CIK\"]")
CIKNodeText = sapply(CIKNode, function(x) xmlValue(getSibling(getSibling(x))))
CIK = sub(" .*","",CIKNodeText)
CIK = sub("^0*","",CIK)
CIK
}
getCIK("GE")
# "40545"
但是当我输入getCIK("CLDR")
时。我正在
字符(0)
我想建立自己的功能:
library(rvest)
ticker = "cldr"
#loc = "New York"
session <- html_session("https://www.sec.gov/edgar/searchedgar/cik.htm")
form <- html_form(session)[[1]]
filled_form <- set_values(form, query = name)
query <- rvest:::submit_request(session, filled_form)
我得到了
错误:无法找到可能的提交目标。
我尝试输入“提交”版本,但我没有运气。有人可以给我一些指导吗?
提前致谢!
答案 0 :(得分:0)
&#34; CLDR&#34;根本没用,因为Cloudera的自动收报机在某种程度上没有在EDGAR系统中更新。第一个代码段中的getCIK()
在提供其他代码时效果很好。
您可以根据以下内容快速将查找从基于股票代码更改为company_name -
require(XML)
require(RCurl)
getCIKFromCompanyName = function(company_name) {
stopifnot(is.character(company_name))
uri = "https://www.sec.gov/cgi-bin/browse-edgar"
response = getForm(uri,company=company_name,action="getcompany")
html = htmlParse(response)
CIKNode = getNodeSet(html, "//acronym[@title=\"Central Index Key\"][text() = \"CIK\"]")
CIKNodeText = sapply(CIKNode, function(x) xmlValue(getSibling(getSibling(x))))
CIK = sub(" .*","",CIKNodeText)
CIK = sub("^0*","",CIK)
CIK
}
getCIKFromCompanyName("Cloudera")
现在,当只有一个公司名称与您提供的参数类似时,这种方法很有效。这种情况在&#34; Google&#34;因为有多个公司名称与&#34; Google&#34;存在于其中。
您首先必须使用某些逻辑,首先使用自动收录器进行搜索,并且只有在不起作用的情况下,才能使用公司名称。
获得公司名称还有其他问题。例如,如果您搜索&#34;特斯拉公司&#34;,则提取失败。你必须搜索&#34;特斯拉汽车&#34;因为那是公司的原始名称。
希望这有帮助。