评论

收藏

[PHP] PHPCrawl爬虫库实现抓取酷狗歌单的方法示例

开发技术 开发技术 发布于:2021-08-21 14:47 | 阅读数:453 | 评论:0

本文实例讲述了PHPCrawl爬虫库实现抓取酷狗歌单的方法。分享给大家供大家参考,具体如下:
本人看了网络爬虫相关的视频后,手痒痒,想爬点什么。最近Facebook上表情包大战很激烈,就想着把所有表情包都爬下来,却一时没有找到合适的VPN,因此把酷狗最近一月精选歌曲和简单介绍抓取到本地。代码写得有点乱,自己不是很满意,并不想放上来丢人现眼。不过转念一想,这好歹是自己第一次爬虫,于是...就有了如下不堪入目的代码~~~(由于抓取的数据量较小,所以没有考虑多进程什么的,不过我看了一下PHPCrawl的文档,发现PHPCrawl库已经把我能想到的功能都封装好了,实现起来很方便)
<?phpheader("Content-type:text/html;charset=utf-8");// It may take a whils to crawl a site ...set_time_limit(10000);include("libs/PHPCrawler.class.php");class MyCrawler extends PHPCrawler {  function handleDocumentInfo($DocInfo) {    // Just detect linebreak for output ("\n" in CLI-mode, otherwise "<br>").    if (PHP_SAPI == "cli") $lb = "\n";    else $lb = "<br />";    $url = $DocInfo->url;    $pat = "/http:\/\/www\.kugou\.com\/yy\/special\/single\/\d+\.html/";    if(preg_match($pat,$url) > 0){    $this->parseSonglist($DocInfo);    }    flush();  }  public function parseSonglist($DocInfo){    $content = $DocInfo->content;    $songlistArr = array();    $songlistArr['raw_url'] = $DocInfo->url;    //解析歌曲介绍    $matches = array();    $pat = "/<span>名称:<\/span>([^(<br)]+)<br/";    $ret = preg_match($pat,$content,$matches);    if($ret>0){      $songlistArr['title'] = $matches[1];    }else{      $songlistArr['title'] = '';    }    //解析歌曲    $pat = "/<a id="codetool">PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:
正则表达式在线测试工具:https://tool.zzvips.com/t/regex/
正则表达式在线生成工具:https://tool.zzvips.com/t/regcode/
希望本文所述对大家PHP程序设计有所帮助。
原文链接:http://blog.csdn.net/fff058/article/details/50574192

关注下面的标签,发现更多相似文章