【转】使用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!