[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 523066680 于 2016-11-29 11:08 编辑
  1. use Encode;
  2. use LWP::Simple;
  3. my $all = get("https://www.nyaa.se/?page=download&tid=613616");
  4. $all =~ /name\d+:(.*?rar)/i;
  5. print encode('gbk', decode('utf8', $1));
复制代码
海贼王765.rar

补充修改一下:
  1. use Encode;
  2. use LWP::Simple;
  3. my $h = head("https://www.nyaa.se/?page=download&tid=613616");
  4. print encode('gbk', decode('utf8',  $h->{'_headers'}->{'content-disposition'} ))
复制代码
inline; filename="海贼王765.rar.torrent"

TOP

本帖最后由 523066680 于 2016-11-29 11:31 编辑

回复 6# tmplinshi


    补充修改了

关于 _headers , 和 content-disposition 的键值由来,Perl的说明文档没有具体介绍,但是可以通过 Data::Dump 输出整个数据结构

  • use LWP::Simple;
  • use Data::Dump qw(dump);

  • my $h = head("https://www.nyaa.se/?page=download&tid=613616");
  • print dump $h;

do {
  my $a = bless({
    _content => "",
    _headers => bless({
      "cf-ray" => "3092ded3aec707eb-LAX",
      "client-date" => "Tue, 29 Nov 2016 03:11:05 GMT",
      "client-peer" => "104.20.74.106:443",
      "client-response-num" => 1,
      "client-ssl-cert-issuer" => "/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO ECC Domain Validation Secure Server CA 2",
      "client-ssl-cert-subject" => "/OU=Domain Control Validated/OU=PositiveSSL Multi-Domain/CN=ssl366349.cloudflaressl.com",
      "client-ssl-cipher" => "ECDHE-ECDSA-AES128-GCM-SHA256",
      "client-ssl-socket-class" => "IO::Socket::SSL",
      "connection" => "close",
      "content-disposition" => "inline; filename=\"\xE6\xB5\xB7\xE8\xB4\xBC\xE7\x8E\x8B765.rar.torrent\"",
      "content-type" => "application/x-bittorrent",
      "date" => "Tue, 29 Nov 2016 03:11:07 GMT",
      "last-modified" => "Thu, 23 Oct 2014 12:11:17 GMT",
      "server" => "cloudflare-nginx",
      "set-cookie" => "__cfduid=d41adfbdcefc8d9c55b9a6c24451c6fb61480389066; expires=Wed, 29-Nov-17 03:11:06 GMT; path=/; domain=.nyaa.se; HttpOnly",
      "vary" => "Accept-Encoding",
    }, "HTTP::Headers"),
    _msg => "OK",
    _protocol => "HTTP/1.1",
    _rc => 200,
    _request => bless({
      _content => "",
      _headers => bless({ "user-agent" => "LWP::Simple/6.00 libwww-perl/6.04" }, "HTTP::Headers"),
      _method => "HEAD",
      _uri => bless(do{\(my $o = "https://www.nyaa.se/?page=download&tid=613616")}, "URI::https"),
      _uri_canonical => 'fix',
    }, "HTTP::Request"),
  }, "HTTP::Response");
  $a->{_request}{_uri_canonical} = \${$a->{_request}{_uri}};
  $a;
}

我觉得这件事(网络爬虫)有三种语言比较合适:ruby python perl

安利 ruby

TOP

本帖最后由 523066680 于 2016-11-29 11:52 编辑

回复 4# tmplinshi


    从第一个弹窗显示的内容
inline; filename="娴疯醇鐜?65.rar.torrent"

可以发现已经有一个变成问号,将 “娴疯醇鐜?65” 还原 gbk 编码(假装是gbk),
其编码内容是:
[e6 b5] [b7 e8] [b4 bc] [e7 8e] 3f 36 35

而原本的编码内容是(utf8):
[e6 b5 b7] [e8 b4 bc] [e7 8e 8b] 37 36 35

由于gbk解读的话,>127的部分是2个字节为一个宽字符的,
提取 [e6 b5] [b7 e8] [b4 bc] [e7 8e] 后剩下 8b 37 36 35,
由于 [8b 37] 在 gbk 表中没有对应的字符,所以变成问号,就变成 3f 咯

按理说如果数据完整提取了,也只是按gbk解读会显示乱码,不应该丢失。
看看是 AlterCharset 的问题,还是  objWinHttp.GetResponseHeader("Content-Disposition")
最好打印编码出来看看

TOP

本帖最后由 523066680 于 2016-11-29 14:40 编辑

回复 12# aa77dd@163.com


    就用普通的 asc
  1. Set objWinHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
  2. objWinHttp.Open "HEAD", "https://www.nyaa.se/?page=download&tid=613616"
  3. objWinHttp.Send
  4. name = objWinHttp.GetResponseHeader("Content-Disposition")
  5. say = ""
  6. for i = 1 to len(name)
  7.     say = say & hex( asc(mid(name, i, 1)) ) & " "
  8. next
  9. msgbox say
复制代码
---------------------------

---------------------------
69 6E 6C 69 6E 65 3B 20 66 69 6C 65 6E 61 6D 65 3D 22 E6B5 B7E8 B4BC E78E 3F 36 35 2E 72 61 72 2E 74 6F 72 72 65 6E 74 22
---------------------------
确定   
---------------------------

可以看到某字节已经丢失,变成了问号(0x3f)

TOP

本帖最后由 523066680 于 2016-11-29 15:13 编辑

回复 14# aa77dd@163.com


    换一种语言海阔天空哈哈~ (如果ruby python perl 也不喜欢,那么,C# 是坠吼的

恩,这句话是和 tmplinshi 说的

TOP

本帖最后由 523066680 于 2016-11-29 21:47 编辑

回复 16# aa77dd@163.com

是我描述上出了偏差 :]

有一首关于编码的诗
手持两把锟斤拷,口中疾呼烫烫烫。
脚踏千朵屯屯屯,笑看万物锘锘锘。

TOP

本帖最后由 523066680 于 2016-11-29 23:37 编辑

回复 18# tmplinshi


也许有可能,但是太折腾的话还是另辟蹊径的好。

TOP

返回列表