如何使用R或PowerShell提取solr query output显示的csv输出?
我试图将数据保存为“csv”格式文件,或从solr查询中提取为数据帧,类似于:如何使用R或PowerShell提取solr query output显示的csv输出?,r,powershell,solr,R,Powershell,Solr,我试图将数据保存为“csv”格式文件,或从solr查询中提取为数据帧,类似于: http://localhost:8983/solr/techproducts/select?q=ipod&fl=id,cat,name,popularity,price,score&wt=csv 我得到一个响应作为网页输出,如下所示: 我能够从html文件(网页solr输出)中显示的csv输出中手动复制、粘贴、保存和检索csv格式的数据。但是,我无法使用R自动化该过程。我既不能通过以正确的顺序取
http://localhost:8983/solr/techproducts/select?q=ipod&fl=id,cat,name,popularity,price,score&wt=csv
我得到一个响应作为网页输出,如下所示:
我能够从html文件(网页solr输出)中显示的csv输出中手动复制、粘贴、保存和检索csv格式的数据。但是,我无法使用R自动化该过程。我既不能通过以正确的顺序取消列出输出来解析和获取整个内容,也不能提取网页中显示的内容并将其保存为csv文件。我尝试了solrium
和httr
软件包,但没有成功。我还尝试在Windows PowerShell中导出Csv
选项,以将数据保存为Csv文件格式,但没有任何运气
寻求解决问题的建议 根据BenH的评论,它已经是CSV格式,因此无需使用
导出CSV
。只需使用调用WebRequest
上的-OutFile
参数:
Invoke-RestMethod "http://localhost:8983/solr/techproducts/select?q=ipod&fl=id,cat,name,popularity,price,score&wt=csv" -OutFile YourFile.csv
为了像我这样的新手的利益,我正在分享解决方案 PowerShell方法:
library(solrium)
solr_connect("https://site.organization.com", errors = "complete")
solr_search(name = "studies", q = "metadata:value", rows=1000, wt = "csv", callopts = httr::authenticate("usrname", "pwd"))
步骤1:我使用了以下保存为.ps1文件的PowerShell代码
curl 'https://some_site.com/solr/some_folder/select?q=*:*&wt=csv' -L -u username:password --location-trusted -b cookie-jar.txt > OutputFilename.csv
步骤2:我使用以下R脚本运行PowerShell文件,并读取PowerShell生成的csv文件作为数据帧,以便进一步处理
system2("PowerShell", args=c("-file", "C:\\FolderName\\FileName.ps1"))
df <- as.data.frame(read.csv("OutputFilename.csv", header = TRUE, sep = ",", fill = TRUE, fileEncoding="UTF-16LE"))
这并没有说明有关powershell的任何具体内容,但作为使用
solrium
的开始,这是否起作用,如果不起作用,它是如何失败的:
(完全可复制),设置Solr
cd solr-6.6.0
bin/solr start -e cloud -noprompt
bin/solr create -c techproducts -d sample_techproducts_configs
bin/post -c techproducts example/exampledocs/*.xml
在R中:
solr\u connect()
(df#A tibble:3 x 6
#>id猫名人气价格分数
#> *
#>1 IW-02电子设备连接器iPod和iPod Mini USB 2.0电缆11.50 3.2388113
#>2 F8V7067-APL-KIT电子产品,连接器Belkin移动电源线,用于iPod,带Dock 1 19.95 2.3162508
#>3 MA147LL/A电子、音乐苹果60 GB iPod带视频播放黑色10399.00 0.9044058
write.csv(df,“myfile.csv”,row.names=FALSE)
读线(“myfile.csv”)
#>[1]“‘id’、‘cat’、‘姓名’、‘人气’、‘价格’、‘分数’”
#>[2]“\“IW-02\”,“电子产品,连接器\”,“iPod和iPod Mini USB 2.0电缆\”,1,11.5,3.2388113“
#>[3]“\“F8V7067-APL-KIT\”,“电子产品,连接器\”,“带Dock的iPod Belkin移动电源线”,1,19.95,2.3162508”
#>[4]“\“MA147LL/A\”、“电子、音乐\”、“苹果60 GB黑色视频播放iPod\”,10399,0.9044058”
对于PowerShell,您不会使用用于将对象转换为CSV的导出CSV
。您已经有一个CSV格式的平面文本文件,因此最好使用输出文件
或设置内容
@BenH,根据您的建议,我可以将输出保存为CSV文件。但是,我无法将该文件作为CSV文件读取文件。每一行都是一条长线,我不能用R来读取文件进行解析。有什么补救办法吗?solrium
mainter:我不确定我是否理解这个问题。solrium是否像你期望的那样给你一个data.frame?如果是的话,你不能用write.csv
或其他等效文件将其作为csv写入磁盘吗nts?@sckott,我在这个论坛上看到了你的许多帖子/回复/建议,并首先试用了你的软件包。问题是我无法从网页上显示的csv格式solr查询结果中提取数据作为数据帧。如果你能就如何实现这一点提出建议,这将对我有很大帮助。@RanonKahn回答如下-这行吗?我得到了答案XML输出而不是csv输出。是否有方法转换/解析查询中的XML输出并将其保存为csv文件?请尝试使用Invoke RestMethod
。您可能会从Invoke WebRequest中获得其他内容,这些内容解释了XML格式的数据。使用Invoke RestMethod,我可以将输出保存为csv文件。但是,我无法o将文件作为csv文件读取。每一行都是一条长线,我无法使用R读取文件进行解析。我得到“似乎包含嵌入的空值”错误。是否有补救措施?但是,在将文件解析为逗号分隔的文件后,我可以使用数据输入选项在Excel中打开该文件。如何验证访问权限?在solr\u connect
中,如果使用该选项,您可以设置代理详细信息。否则,您可以通过callopts
将选项传递给HTTP请求,例如>callopts=httr::authenticate(user=“foo”,password=“bar”)
执行简单的authsourl
param insolr\u connect
只是solr实例的基本url。不是额外的url部分,这些部分在每个函数中处理,例如,solr\u search
为您添加/select
。我正在使用更精细的控制来改进连接类-观察在sckott有很多内容。我将热切关注。例如,solr\u search(callopts=httr::authenticate(“foo”,“bar”))
-同样,可以对代理使用httr::use\u proxy()
solr_connect()
(df <- solr_search(
name = "techproducts",
q = "ipod",
fl = c("id", "cat", "name", "popularity", "price", "score"),
wt = "csv"))
#> # A tibble: 3 x 6
#> id cat name popularity price score
#> * <chr> <chr> <chr> <int> <dbl> <dbl>
#> 1 IW-02 electronics,connector iPod & iPod Mini USB 2.0 Cable 1 11.50 3.2388113
#> 2 F8V7067-APL-KIT electronics,connector Belkin Mobile Power Cord for iPod w/ Dock 1 19.95 2.3162508
#> 3 MA147LL/A electronics,music Apple 60 GB iPod with Video Playback Black 10 399.00 0.9044058
write.csv(df, "myfile.csv", row.names = FALSE)
readLines("myfile.csv")
#> [1] "\"id\",\"cat\",\"name\",\"popularity\",\"price\",\"score\""
#> [2] "\"IW-02\",\"electronics,connector\",\"iPod & iPod Mini USB 2.0 Cable\",1,11.5,3.2388113"
#> [3] "\"F8V7067-APL-KIT\",\"electronics,connector\",\"Belkin Mobile Power Cord for iPod w/ Dock\",1,19.95,2.3162508"
#> [4] "\"MA147LL/A\",\"electronics,music\",\"Apple 60 GB iPod with Video Playback Black\",10,399,0.9044058"