perl 爬ku6视频
生活随笔
收集整理的這篇文章主要介紹了
perl 爬ku6视频
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ?起因是自己想在公司做ku6視頻緩存增加點工作經驗(領導非常支持,找了7臺720XD,有個好領導還是很幸福的),后來因為白天回源緊張,就停止計劃了;某天突然想到那些視頻公司都是主動推送熱點文件到服務器,要是我自己凌晨回源同步熱點,減少白天熱點文件回源,那我視頻緩存項目還可以繼續推進;
個人是perl新手,下面代碼有些是朋友幫忙寫的(有好朋友也幸福...要不然自己要研究到啥時候),我自己寫了點再把各部分功能組合起來;雖然跑的慢點,但有效果,也能接受; 這算寫過最長的代碼了。。。
[root@web-40 perl]# cat new_hash_ku6.pl #!/usr/bin/perl use strict; use warnings; use LWP::Simple; use HTML::TreeBuilder; use JSON qw(decode_json); my $html = get ("http://www.ku6.com"); my $root = HTML::TreeBuilder->new_from_content($html); my %p_w_picpaths = (); my @urls; my $sub_html; my $sub_root; my %urls; my @sub_urls; foreach my $node ($root->find_by_tag_name('a')){$p_w_picpaths{$node->attr('href')}++; } foreach my $pic (sort keys %p_w_picpaths){if ( ($pic =~ /http:\/\/v\.ku6\.com.*/s) &&($pic =~ m{/show/})){push(@urls, $pic);$urls{$pic}++;} } 上面代碼是把ku6首頁的視頻連接都抓出來; 子程序get_sub_url 是逐個請求視頻連接,順便把每打開一個視頻網頁,那頁上面的推廣視頻連接也抓下來保存到數組; sub get_url {foreach my $url (@urls){$sub_html = get ($url);$sub_root = HTML::TreeBuilder->new_from_content($sub_html);my %href = ();for my $sub_node ($sub_root->find_by_tag_name('a')){$href{$sub_node->attr('href')}++;}for my $sub_pic (sort keys %href){if (($sub_pic =~ /http:\/\/v\.ku6\.com.*/s) &&($sub_pic =~ m{/show/})){if (exists $urls{$sub_pic}){next;}else { push(@sub_urls,$sub_pic) };}}get_mail_url(@sub_urls);} } 子程序get_mail_url 是模擬用戶去訪問ku6的調度服務器,下載視頻內容; 這樣就相當于主動把ku6的熱點文件下載到緩存服務器,復用了,凌晨的空閑 帶寬 sub get_mail_url {foreach my $get_mail (@sub_urls){my $url_mail = "$get_mail";my $lwp =new LWP::UserAgent( agent =>'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; CIBA)');my $request = HTTP::Request->new( GET => $url_mail );$lwp->max_redirect;$request->header( Accept => 'text/html' );my $response = $lwp->request($request);my $html = $response->decoded_content;my ($flv_download_link) = ( $html=~ /"f":"([^\"]+)"/s );my $json = '{ "url":"' . $flv_download_link. '"}';$flv_download_link = decode_json($json)->{url};system("wget $flv_download_link -O /dev/null");} } get_url (@urls);下一步就是,讓CDN跑一周以上,根據日志,分析用戶主要看哪類視頻,重點爬這些視頻;
轉載于:https://blog.51cto.com/luyafei/1286748
總結
以上是生活随笔為你收集整理的perl 爬ku6视频的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: orcal 数据库密码修改(表密码,sy
- 下一篇: 年中总结(2013年3月到2013年9月