设为首页 收藏本站
查看: 1374|回复: 0

[经验分享] perl 爬ku6视频

[复制链接]

尚未签到

发表于 2018-8-31 07:05:51 | 显示全部楼层 |阅读模式
[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 %images = ();
  
my @urls;
  
my $sub_html;
  
my $sub_root;
  
my %urls;
  
my @sub_urls;
  
foreach my $node ($root->find_by_tag_name('a')){
  
$images{$node->attr('href')}++;
  
}
  
foreach my $pic (sort keys %images){
  
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);



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-559049-1-1.html 上篇帖子: perl高水线算法 下篇帖子: perl上下文介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表