zoukankan      html  css  js  c++  java
  • 【转】使用PHP创建基本的爬虫程序

    爬虫程序

    Web Crawler, 也时也称scrapers,即网络爬虫,用于自动搜索internet并从中提取 想要的内容。互联网的发展离不开它们。爬虫是搜索引擎的核心,通过智能算法发现符合 你输入的关键字的网页。

    Google网络爬虫会进入你的域名,然后扫描你网站的所有网页,从中析取网页标题,描述, 关键字和链接 - 然后把这些的评价返回给Google HQ,把内容存放至海量的数据库中、

    今天,我很高兴告诉你怎么做自己的爬虫 -- 它并不对整个互联网进行搜索,只是对指定的 一个网址获取所有链接和信息[译:我稍微根据应用修改了例子,改成获取电视节目表]。

    一般地,你应该确保你在爬虫前已经获得授权,因为那真的是一个灰色的地带。就如我说过 互联网离不开这些爬虫,对于理解它们是如何工作,如何创建的是一件很重要的事。

    为了让实现更简单,我们使用最流行的网络编程语言--PHP.不用怕你不懂PHP--我将告诉你 演示每一步操作,并解释是用来做什么的。我假定你已经了解HTML,并知道如何在HTML文档中 加链接和图片。

    你需要有一个服务器运行PHP脚本。建议你使用AppServ

    入门

    我们使用一个辅助库Simple HTML DOM。这个库用于便捷地遍历HTML文档。

    首先,我们测试环境是否正常。创建一个.php文件。并把下面代码拷贝至服务器www文件夹。

    <?php
        include_once('simple_html_dom.php');
        phpinfo();
    ?>
    

    通过浏览器浏览创建的文件。如果一切正确,那么你会看到如下图输出的服务器信息:

    服务器信息

    第1行代码<?php告诉服务器使用PHP语言。这对服务器如何解析是十分重要的。第二行代码是包含 我们辅助库Simple HTML DOM。最后phpinfo()打印出PHP当前的配置信息,用于查看环境是否正常。要注意所有PHP语句都要以;结尾。初学者最常见的一个错误就是忘记写分号,结果输出空白页。

    接下来,我们把phpinfo替换成我们的爬虫代码。我们的任务是从一个电视节目预告的网站获取节目表。代码如下:

    <?
    
        include_once('simple_html_dom.php');
    
        $domain = "http://epg.tvsou.com";
        $target_url = "http://epg.tvsou.com/programys/TV_1/Channel_1/W4.htm";
        $html = new simple_html_dom();
        $html->load_file($target_url);
    
        // 查找channel
        $channels = array();
        $channels['CCTV-1'] = $target_url;
        foreach($html->find('div[class=listmenu2] a') as $post)
        {
            $channels[$post->innertext] = $domain.$post->href;
        }
    ?>
    

    首先,我们通过$target_url指示抓取的地址,通过实例化simple_html_dom对象,以load_file加载指定地址内容。最后,调用find提取想要的内容。find的语法与css选择子很类似。上面代码 获取节目的频道连接,由于频道链接是class=listmenu2的div下的链接,所以我们把它存放在数组中,并通过链接的文本(即频道名作为索引)

    通过获取频道链接后,我们可以进一步深入获取频道的节目表,我相信你已经能够把后面的代码完成了。enjoy!

  • 相关阅读:
    python tkinter坐标转换
    python tkinter画圆
    打开pycharm提示python已停止工作
    关于python读写文件的r+方式的坑
    pycharm的一个bug,pycharm 在debug时,会运行项目下的所有文件,而不是当前文件
    python tkinter实时显示曲线
    书上关于*(p++)表达式的几种变形形式的思考题
    lua 中的 loadfile、dofile和require的调用
    css控制字体线使用:text-decoration
    devpi 快速入门:上传,测试,推送发行版
  • 原文地址:https://www.cnblogs.com/qf19910623/p/4786645.html
Copyright © 2011-2022 走看看