亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 114354 | 回復(fù): 8
打印 上一主題 下一主題

LWP下載知乎答案中的視頻 [復(fù)制鏈接]

論壇徽章:
12
子鼠
日期:2014-10-11 16:46:482016科比退役紀(jì)念章
日期:2018-03-16 10:24:0515-16賽季CBA聯(lián)賽之山東
日期:2017-11-10 14:32:142016科比退役紀(jì)念章
日期:2017-09-02 15:42:4715-16賽季CBA聯(lián)賽之佛山
日期:2017-08-28 17:11:5515-16賽季CBA聯(lián)賽之浙江
日期:2017-08-24 16:55:1715-16賽季CBA聯(lián)賽之青島
日期:2017-08-17 19:55:2415-16賽季CBA聯(lián)賽之天津
日期:2017-06-29 10:34:4315-16賽季CBA聯(lián)賽之四川
日期:2017-05-16 16:38:55黑曼巴
日期:2016-07-19 15:03:112015亞冠之薩濟(jì)拖拉機(jī)
日期:2015-05-22 11:38:5315-16賽季CBA聯(lián)賽之北京
日期:2019-08-13 17:30:53
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2018-05-15 17:48 |只看該作者 |倒序?yàn)g覽
本帖最后由 523066680 于 2018-10-16 15:36 編輯

首發(fā):https://zhuanlan.zhihu.com/p/36865994

視頻示例:https://www.zhihu.com/question/271736973/answer/389377346

其中 use Modern::Perl; 不是必需的。

  1. =info
  2.     Author: 523066680
  3.     Date: 2018-05
  4. =cut

  5. use Modern::Perl;
  6. use LWP::UserAgent;
  7. use File::Slurp;
  8. use JSON;
  9. STDOUT->autoflush(1);

  10. goto_dir("D:/temp");
  11. our $main = "https://lens.zhihu.com/api/videos/";
  12. our $ua = LWP::UserAgent->new(  );
  13. our $target = "https://www.zhihu.com/question/271736973/answer/389377346";

  14. my $res = $ua->get( $target );
  15. my $html = $res->content();
  16. my @video = $html=~/>https:.*?video\/(\d+)</g;
  17. my $oauth = get_oauth( $html );

  18. for my $idx ( 0 .. $#video )
  19. {
  20.     printf "Getting video %s - %s\n", $idx, $video[$idx];
  21.     my @vlinks = get_video_links(  $oauth, $video[$idx] );
  22.     get_video( @vlinks );
  23. }

  24. # 獲取 m3u8 列表并提取鏈接
  25. sub get_video_links
  26. {
  27.     our ($main, $ua);
  28.     my ( $oauth, $pgcode ) = @_;

  29.     my $res = $ua->get(
  30.                 $main .$pgcode,
  31.                 "authorization" => $oauth,
  32.             );

  33.     die unless $res->is_success();

  34.     my $data = decode_json( $res->content );
  35.     my $play_url = $data->{playlist}->{sd}->{play_url};  # m3u8 url
  36.     my $pre_url;

  37.     # 獲取網(wǎng)址共用部分
  38.     $play_url =~/(.*?\w{32})/;  
  39.     $pre_url = $1 ."/";

  40.     $res = $ua->get( $play_url );
  41.     my @vlinks = $res->content =~/\n(.*?\d+\.ts.*?)\n/g;
  42.     grep { $_ = $pre_url . $_ } @vlinks;

  43.     return $pgcode, @vlinks;
  44. }

  45. # 獲取視頻切片,合并
  46. sub get_video
  47. {
  48.     our $ua;
  49.     my $name = shift;
  50.     my $buff = "";
  51.     my $res;

  52.     while ( my $link = shift )
  53.     {
  54.         print $#_ + 1 ," ";
  55.         $res = $ua->get( $link );
  56.         $buff .= $res->content();
  57.     }
  58.     print "\n";

  59.     write_file( "${name}.ts", {binmode=>":raw"}, $buff );
  60. }

  61. sub get_oauth
  62. {
  63.     our ( $ua );
  64.     my $html = shift;
  65.     my ($js) = $html =~/(https:[^<>]+main\.app[^<>]+js)/g;
  66.     my $res = $ua->get( $js );
  67.     # pattern: authorization:"oauth c3cef7c66a1843f8b3a9e6a1e3160e20"}
  68.     my ($oauth) = $res->content =~/authorization:"([^"]{30,})"/;
  69.     return $oauth
  70. }

  71. sub goto_dir
  72. {
  73.     my $dir = shift;
  74.     mkdir $dir unless ( -e $dir );
  75.     chdir $dir;
  76. }

  77. __DATA__
復(fù)制代碼


Perl 是不是過(guò)時(shí)我真的不關(guān)心,只用來(lái)做想做的事(工作和編程無(wú)關(guān))。

2018-10 更新,7樓

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2018-05-15 18:37 |只看該作者
感谢分享!

Perl是个能干活的骆驼,用起来很爽。

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2018-06-15 19:31 |只看該作者
牛,可以做個(gè)爬蟲(chóng)

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2018-06-15 19:31 |只看該作者
牛,可以做個(gè)爬蟲(chóng)

論壇徽章:
12
子鼠
日期:2014-10-11 16:46:482016科比退役紀(jì)念章
日期:2018-03-16 10:24:0515-16賽季CBA聯(lián)賽之山東
日期:2017-11-10 14:32:142016科比退役紀(jì)念章
日期:2017-09-02 15:42:4715-16賽季CBA聯(lián)賽之佛山
日期:2017-08-28 17:11:5515-16賽季CBA聯(lián)賽之浙江
日期:2017-08-24 16:55:1715-16賽季CBA聯(lián)賽之青島
日期:2017-08-17 19:55:2415-16賽季CBA聯(lián)賽之天津
日期:2017-06-29 10:34:4315-16賽季CBA聯(lián)賽之四川
日期:2017-05-16 16:38:55黑曼巴
日期:2016-07-19 15:03:112015亞冠之薩濟(jì)拖拉機(jī)
日期:2015-05-22 11:38:5315-16賽季CBA聯(lián)賽之北京
日期:2019-08-13 17:30:53
5 [報(bào)告]
發(fā)表于 2018-06-18 11:25 |只看該作者
本帖最后由 523066680 于 2018-06-18 20:06 編輯

回復(fù) 3# dahe_1984

寫(xiě)了tumblr的視頻批量下載,不過(guò)需要賬號(hào)登錄,加上內(nèi)容敏感,就沒(méi)有分享~

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2018-07-01 08:09 |只看該作者
謝樓主,學(xué)習(xí)下!

論壇徽章:
12
子鼠
日期:2014-10-11 16:46:482016科比退役紀(jì)念章
日期:2018-03-16 10:24:0515-16賽季CBA聯(lián)賽之山東
日期:2017-11-10 14:32:142016科比退役紀(jì)念章
日期:2017-09-02 15:42:4715-16賽季CBA聯(lián)賽之佛山
日期:2017-08-28 17:11:5515-16賽季CBA聯(lián)賽之浙江
日期:2017-08-24 16:55:1715-16賽季CBA聯(lián)賽之青島
日期:2017-08-17 19:55:2415-16賽季CBA聯(lián)賽之天津
日期:2017-06-29 10:34:4315-16賽季CBA聯(lián)賽之四川
日期:2017-05-16 16:38:55黑曼巴
日期:2016-07-19 15:03:112015亞冠之薩濟(jì)拖拉機(jī)
日期:2015-05-22 11:38:5315-16賽季CBA聯(lián)賽之北京
日期:2019-08-13 17:30:53
7 [報(bào)告]
發(fā)表于 2018-10-16 15:35 |只看該作者
更新一下,現(xiàn)在知乎簡(jiǎn)化了,不用oauth,也不用多個(gè)ts文件拼接,直接單個(gè)MP4

代碼保存為 UTF8 編碼格式


  1. =info
  2.     Author: 523066680
  3.     2018-07 知乎去掉了 oauth 授權(quán)方式
  4.     2018-10 從 ts 多文件,變更為 mp4 單文件下載
  5. =cut

  6. use JSON;
  7. use Encode qw/from_to/;
  8. use LWP::UserAgent;
  9. use Mojo::DOM;
  10. use File::Slurp;
  11. STDOUT->autoflush(1);

  12. our $wdir = "D:/temp";
  13. our $main = "https://lens.zhihu.com/api/videos/";
  14. our $ua = LWP::UserAgent->new();
  15. our $target = "https://www.zhihu.com/question/271736973/answer/389377346";
  16. #our $target = "https://www.zhihu.com/question/285103979/answer/492401516";
  17. #our $target = "https://www.zhihu.com/question/278030511/answer/452274063";

  18. my $res = $ua->get( $target );
  19. my $html = $res->content();
  20. my @video = $html=~/>https:.*?video\/(\d+)</g;  # 獲取視頻頁(yè)面鏈接
  21. my $title = get_title_name( $html );
  22. my ($answerID) = ($target=~/\/(\d+)$/);

  23. mkdir $wdir unless -e $wdir;
  24. chdir $wdir;

  25. for my $idx ( 0 .. $#video )
  26. {
  27.     printf "Getting video %s - %s\n", $idx, $video[$idx];
  28.     get_video( $video[$idx], "${title}Answer_${answerID}_${idx}.mp4" );
  29. }

  30. sub get_video
  31. {
  32.     our ($main, $ua);
  33.     my ( $pgcode, $fname ) = @_;

  34.     my $res = $ua->get( $main .$pgcode );
  35.     die unless $res->is_success();

  36.     my $data = decode_json( $res->content );
  37.     my $play_url = $data->{playlist}->{sd}->{play_url};

  38.     $res = $ua->get( $play_url );
  39.     write_file( $fname, {binmode=>":raw"}, $res->content );
  40. }

  41. sub get_title_name
  42. {
  43.     my $html = shift;
  44.     my $dom = Mojo::DOM->new($html);
  45.     my $title = $dom->at("title")->text;
  46.     $title =~s/ - 知乎//;
  47.     from_to( $title, "utf8", "gbk" );
  48.     return $title;
  49. }

復(fù)制代碼

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2019-03-13 16:44 |只看該作者
路過(guò)看看啦啦啦啦

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2019-03-29 22:05 |只看該作者
看不懂,學(xué)習(xí)中。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP