我尝试使用wkhtmltopdf
将网站内容转换为pdf格式,然后读取到我的R中。因此,我在命令提示行中写入下载为雅虎财经的html首页(只是为了好玩)。因此,我在C上创建了“TemporaryFolder”,并在cmd中写入:
C:\Program Files\wkhtmltopdf\bin>wkhtmltopdf https://finance.yahoo.com/ "C:/TemporaryFolder/myhtml.pdf"
而且它下载雅虎财经网站为pdf。现在我想做同样的事情,但使用R脚本。我知道有system
功能,但我很少有经验与它(和cmd老实说)。
所以现在我试着在我的Rstudio中使用这个命令,这样我就可以稍后创建R脚本,将网站下载为HTML并将其转换为PDF。
URL="https://finance.yahoo.com/"
wkhtmltopdf_dir="C:/Program Files/wkhtmltopdf/bin"
save_as="C:/TemporaryFolder/myhtml.pdf"
x=paste0(wkhtmltopdf_dir,">","wkhtmltopdf"," ",URL," ",'\"',save_as,'\"')
system(x)
我也尝试了shell(x)
,但我得到了“权限被拒绝”。
但是它什么也不做...有没有人能详细说明system
是如何工作的,以及这里应该添加什么?
顺便说一句:我会通过使用system
来伤害我的计算机吗?例如写一些“坏”命令?这个问题可能听起来很傻,但我真的很陌生。
3条答案
按热度按时间avkwfej41#
您试图粘贴的命令(
"C:/Program Files/wkhtmltopdf/bin>wkhtmltopdf https://finance.yahoo.com/ \"C:/TemporaryFolder/myhtml.pdf\""
)不太起作用。第一部分("C:/Program Files/wkhtmltopdf/bin>
)实际上是您在commander中运行它时的提示符。它不是命令的一部分,而是显示您运行该命令的目录。如果将
wkhtmltopdf
替换为C:/Program Files/wkhtmltopdf/bin/wkhtmltopdf.exe
,它应该可以正常工作:为了回答第二个问题,调用
system()
通过CMD运行命令,所以基本上任何你可以通过CMD.exe搞砸的事情,你都可以通过system()
搞砸。pw136qt22#
我找到了问题所在。正如我在评论中所写的,在使用
shell(x)
而不是system(x)
之后,它返回了'C:/Program' is not recognized as an internal or external command, operable program or batch file.
。所以我重新安装了wkhtmltopdf到名称不包含空格的文件夹中。所以wkhtmltopdf_exe
现在是:wkhtmltopdf_exe="C:/Programs/wkhtmltopdf/bin/wkhtmltopdf.exe"
其余的代码是相同的。这里的后续工作会很好,有没有办法解决文件夹名称中的空格?或者我应该总是避免空格?将wkhtmltopdf路径放在引号中没有帮助。
感谢用户JAD修复我的第一个代码
fdx2calv3#
空格一直是命名中的一个缺陷,因此总是被下划线所取代。