yangakw yangakw

php的表情包爬虫(大神绕路,求别喷)

in 记录read (170) 文章转载请注明来源!

前言

网址来自这个https://www.zhuangbi.info/?page=
佩服这哥们,做了这么好的网站,但是这个网站虽然很好,但是我用着不方便(不是小视频)

开始准备

分析网页如图,数据不是异步加载的需要用工具解析dom提取img>src,img>alt
请输入图片描述

工具准备

在下不才,不会什么高大上的语言使用php去写的爬虫,插件用了simple_html_dom解析dom,逐页抓取图片并下载。本来想先少抓点测试下,设置了100页。没想到到了70多页就没数据了。不说了上代码

<?php
define("WEB_PATH","https://www.zhuangbi.info/?page="); 
define("IMG_PATH",__DIR__."/images/");
define("HTML_PATH",__DIR__."/html/");
define("PAGE_TOTAL",105);
require("simple_html_dom.php");
function o($s){
    echo $s."\n";
}
function save($title,$url){ 
    $title = iconv("UTF-8","GBK",$title); 
    $type = explode("?",$url);
    $type = isset($type["0"])?$type["0"]:$type;
    $type = explode(".",$type);
    $type = array_pop($type);
    $title = $title.".".$type;
    $path = IMG_PATH."".$title;
    if(is_file($path)){
        return 0;
    }
    $img = file_get_contents($url); 
    if(!empty($img) && !is_file($path)){  
        try 
        { 
            file_put_contents($path,$img); 
        }
        catch(Exception $e) 
        { 
            return 0;
        }
    } 
    o("----save $title $url !");
    unset($img); 
    return 1;
}
function each_page($path){  
    $html = new simple_html_dom();
    $html->load_file($path);
    if(empty($html) || !($html instanceof simple_html_dom) ){
        return 0;
    }
    if( !method_exists($html->root,"find") ){
        return 0;
    }
    $imgs = $html->find("img");
    
    foreach($imgs as $img){
        if(isset($img->alt)){
            $src = $img->src;
            $title = $img->alt;
            save($title,$src);
        } 
    }
    unset($html);
    unset($imgs); 
}
function _main(){
    $index_page = 0;
    while($index_page < PAGE_TOTAL){ 
        $path = HTML_PATH.$index_page++.".html";
        if(!is_file($path)){ 
            $html = file_get_html(WEB_PATH.$index_page++);
            file_put_contents($path,$html);
            o("$path download done!"); 
            sleep(2);
            unset($html); 
        }
        each_page($path);
    }
}
_main();
?>

里面的文件结构需要手动创建,html,images

成果展示

请输入图片描述

jrotty WeChat Pay

微信打赏

jrotty Alipay

支付宝打赏

文章二维码

扫描二维码,在手机上阅读!

发表新评论
博客已运行
© 2017 yangakw
PREVIOUS NEXT
雷姆
拉姆