资讯专栏INFORMATION COLUMN

PHP爬取百度热歌

gaomysion / 2253人阅读

摘要:百度歌曲歌曲名歌手名开始写代码,解析页面内容,获得歌曲编号歌曲名艺人名字收藏歌曲名收藏歌手名合并数组

使用php扩展curl爬取百度热歌单曲

要求PHP扩展CURL
爬虫主要是运用正则技术

半壶纱  

之后生成php文件,格式为  
  
*/ 
class Fetch {

    function getData($url) {
        $data = array();
        $str = $this->http($url);
        if($str) {
            $data  = $this->parseHtml($str);
        }
        return $data;
    }

    function http($url) {
        //No.1
        //开始写代码,根据所给链接抓取网站内容
        // $curl = $url;
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  //将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);


        $output = curl_exec($ch);

        return $output;
        //end_code
    }

    function parseHtml($str) {
        
        $ids = array();  //百度歌曲id
        $titles = array(); //歌曲名
        $names = array(); //歌手名
        //No.2
        //开始写代码,解析页面内容,获得歌曲编号、歌曲名、艺人名字
        $pattern = "/href="/song/d*/";
        preg_match_all($pattern, $str, $matches);
        foreach ($matches[0] as $v) {
            $ids[] = strtok($v, "href="/song/");
        }

        $pattern = "/title="收藏D+" href="#">/"; //歌曲名
        preg_match_all($pattern, $str, $matches);
        foreach ($matches[0] as $v) {
            $titles[] = strtr($v, array("title="收藏"=>"", "" href="#">"=>""));
        }

        $pattern = "/author_list" title="D+">/"; //歌手名
        preg_match_all($pattern, $str, $matches);
        foreach ($matches[0] as $v) {
            $names[] = strtr($v, array("author_list" title=""=>"", "">"=>""));
        }

        //合并数组
        foreach ($ids as $key => $value) {
            $coalesce[$key]["id"] = $ids[$key];
            $coalesce[$key]["title"] = $titles[$key];
            $coalesce[$key]["name"] = $names[$key];
        }

        $url = array();
        foreach ($coalesce as $v) {
            $url[] = "".$v["title"]."";
        }
        return $url;
        //end_code
    }
}

$url = "http://music.baidu.com/tag/%E7%83%AD%E6%AD%8C";
$fetch = new Fetch();
$data = $fetch->getData($url);

print_r($data);

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22921.html

相关文章

  • 如何使用robots禁止各大搜索引擎爬虫爬取网站

    摘要:由于公司网站配置的测试环境被百度爬虫抓取,干扰了线上正常环境的使用,刚好看到每次搜索淘宝时,都会有一句由于文件存在限制指令无法提供内容描述,于是便去学习了一波原来一般来说搜索引擎爬取网站时都会,先读取下文件,并依照里面所设定的规则去爬取ps:由于公司网站配置的测试环境被百度爬虫抓取,干扰了线上正常环境的使用,刚好看到每次搜索淘宝时,都会有一句由于robots.txt文件存在限制指令无法提供内...

    RyanHoo 评论0 收藏0
  • php 爬虫程序 爬取有用的免费API

    摘要:做了一个爬取的类可以获取全国行政区域效果图差不多有多行只要秒就可以爬完首先这个在阿里云市场是免费的每个人都可以用地址在这里要先注册阿里云然后购买他这个一次只能买你可以买三四次应该就可以全部下载完毕了爬虫思路初始化并将句柄添加进去执行所有的句 做了一个爬取api的类.可以获取2017全国行政区域. git: https://github.com/buffge/loa... 效果图: s...

    Charles 评论0 收藏0
  • python爬虫入门(一)

    摘要:想办法区分爬虫程序和正常的用户。爬虫是工具性程序,对速度和效率要求较高。生态圈完善,是最大对手。最要命的是爬虫需要经常修改部分代码。爬虫分类通用爬虫也就是百度搜狐等搜索引擎。原本是为测试来测试网站的,后来成了爬虫工程师最喜爱的工具。 一、爬虫的基本知识: 1. 什么是爬虫 爬虫的英文翻译为spider或者crawder,意为蜘蛛或者爬行者,从字面意思我们可以体会到:爬虫就是把自己当做蜘...

    lentrue 评论0 收藏0
  • 解决 Github Pages 禁止百度爬虫的方法与可行性分析

    摘要:可行性分析是通过来判定百度爬虫并返回的。然而并没有卵用参考资料如何解决百度爬虫无法爬取搭建在上的个人博客的问题 本文最初发布于我的个人博客:咀嚼之味 我写技术博客有两个原因:一是总结自己近日的研究成果,二是将这些成果分享给大家。所以就我个人来说,还是比较希望写出来的文章有更多的人能够看到的。我最近注意到我的博客的流量大多来自于谷歌,而几乎没有来源于百度的。而本文就旨在提出这个...

    Yuanf 评论0 收藏0
  • 我在全球最大的同性社交平台那点事

    摘要:从最大的同性社交平台获取数据好了,言归正传,回到题目。乌云密布的爬虫百度网盘这件事,是我不想看到的,这类安全问题的一个共同特点用户自身确实存在问题。 本文作者:夏之冰雪,i春秋签约作家 《我在百度网盘上看到上万条车主个人信息,企业、政府高官信息、各种数据库和无穷无尽的盗版》,一时间,这篇文章就火了,火爆程度另百度猝不及防。 其实呢,这事真不能全怪百度,毕竟用户分享出去了。之所以引起这么...

    AlphaWatch 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<