Top Menu

批量对网页进行抓取的小程序

需求:曾经买过一款考试软件,附送了一些网校的视频,而这些视频是放在他们自己的网盘上的,但是这个网盘是需要密码的,但是经过分析发现密码都是存在不同的html文件里的,并且还发现这些html文件的命名都是有规律的。所以准备些个小程序,来抓取这些网盘的密码。

开发记录

网址的批量抓取通过for循环来实现,比较容易。接下来碰到一个棘手的问题,就是如何提取内容。因为html文件里面没有用tag划分层次,所以所有内容都是一个大的文本块。遂翻了下PHP的字符串函数,发现两个函数,一个是strstr()可以截取指定文字后的所有内容,还有一个是substr()可以截取指定位置前的所有内容,这个函数还有一个搭配strpos()用来定位指定的文字位置给它。ok,这样就取得了所需要的密码和课程名称。整个开发历时2个小时,最后还加了个保存成html的功能,可以把抓取的内容保存成html。

成果

PHP实现

$i = 0; $to = 100; for($i;$i<=$to;$i++){ $url = 'http://www.bc150.com/book'.$i.'.html'; $html = file_get_html($url); if(!$html) echo 'not found'; else{ if($html->find("#UpdatePanel1",0)){ echo '<a href='.$url.'>'.$url.'</a><br/>'; // $key = $html->getElementById ( "#UpdatePanel1",0 )->plaintext; // echo $key.'<br/>'; $body = $html->plaintext; $body_name = strstr($body, '赠送资料'); $body_name = substr($body_name,0,strpos($body_name,'下载地址')); echo $body_name.'<br/>'; $body_download = strstr($body, '下载地址'); $body_download = substr($body_download,0,strpos($body_download,'访问密码')); echo $body_download.'<br/>'; $body_key = strstr($body, '访问密码'); $body_key = substr($body_key,0,strpos($body_key,'后续服务')); echo $body_key.'<br/>'; } ob_flush(); flush(); } }

Continue Reading 0

关于用reflector录屏后视频的声音延迟问题

最近在用reflector录iPad视频的时候发现这个问题,就是录制后的视频直接打开是没有问题,但是放到后期编辑软件里进行剪辑的时候会发现导入后的剪辑音频和视频不匹配,具体就是音频会延迟,而这个延迟又是没有规律的。曾经想通过调整音频的时间帧数来进行修正,但是发现这种延迟是没有规律的,没有办法进行调整。经过研究,发现可能的问题出在编辑软件的项目属性上,可能是因为属性设置的问题,导致reflector录制的视频在导入的时候声音编码被打乱,使得与视频不能同步。

Continue Reading 0

Powered by WordPress. Designed by WooThemes