我在debian上的SBCL.
出于某种原因,如果我使用这个:
(with-open-file (output (open #p"file.txt"
:direction :output
:if-exists :overwrite))
(format output "test")))
Run Code Online (Sandbox Code Playgroud)
file.txt纯文本文件在哪里.
我收到了错误
#<SB-SYS:FD-STREAM for "file /home/me/file.txt" {1004A90813}> is not
a character output stream.
Run Code Online (Sandbox Code Playgroud)
即使使用:element-type 'character也不能救我.我无法通过任何方法打开任何输出流.如果我尝试使用write-bit它说它不是二进制输出流.没有其他写函数可以工作,例如write-sequence或write-line.他们都返回此错误.我该如何解决?
编辑:最终使用 WWW::Mechanize::Firefox。我在下面回答了我自己的问题。
我正在尝试访问一个网站并下载它的页面。网站上的cloudflare DDOS防护偶尔会出现,我无法让LWP通过。我可以成功地检测到一个页面是带有正则表达式的 cloudflare 启动页面,/Ray ID: [a-f0-9]*/但是每当我尝试再次连接时,我都会得到带有新 Ray ID 的相同启动屏幕。这是一个(精简的)代码示例:
use LWP::UserAgent;
$ua = LWP::UserAgent->new;
$ua->agent('Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0 Iceweasel/31.3.0');
$signin_url = 'my url';
$signin_page = $ua->get($signin_url);
if($signin_page->content =~ /Ray ID: ([a-f0-9]*)/i) {
print "DDOS protection page here\n";
#more code to retry, but just gets back into this part of the IF
} else {
print "Not the DDOS page\n";
#now I would save to file
}
Run Code Online (Sandbox Code Playgroud)
由于那不起作用,我需要能够以另一种方式做到这一点。