如何使用R或PowerShell提取solr query output显示的csv输出?

如何使用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自动化该过程。我既不能通过以正确的顺序取

我试图将数据保存为“csv”格式文件,或从solr查询中提取为数据帧,类似于:

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”)
执行简单的authso
url
param in
solr\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"