【转】使用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!
【转】使用PHP创建基本的爬虫程序的更多相关文章
- Scrapy:创建爬虫程序的方式
Windows 10家庭中文版,Python 3.6.4,Scrapy 1.5.0, 在Scrapy中,建立爬虫程序或项目的方式有两种(在孤读过Scrapy的大部分文档后): 1.继承官方Spider ...
- 为编写网络爬虫程序安装Python3.5
1. 下载Python3.5.1安装包1.1 进入python官网,点击menu->downloads,网址:https://www.python.org/downloads/ 1.2 根据系统 ...
- Docker Compose 一键部署多节点爬虫程序
Docker Compose 一键部署多节点爬虫程序 目录结构 [root@localhost ~]# tree compose_crawler/ compose_crawler/ ├── cento ...
- Scrapy:运行爬虫程序的方式
Windows 10家庭中文版,Python 3.6.4,Scrapy 1.5.0, 在创建了爬虫程序后,就可以运行爬虫程序了.Scrapy中介绍了几种运行爬虫程序的方式,列举如下: -命令行工具之s ...
- 某个php爬虫程序分析--来自wooyun
乌云漏洞编号: WooYun-2014-68061 作者:hkAssassin 爬虫程序源码: <?php header("content-type:text/html;charset ...
- 简单的爬虫程序以及使用PYQT进行界面设计(包含源码解析)
由于这个是毕业设计的内容,而且还是跨专业的.爬虫程序肯定是很简单的,就是调用Yahoo的API进行爬取图片.这篇博客主要讲的是基础的界面设计. 放上源码,然后分部解析一下重要的地方.注:flickra ...
- liunx系统下crontab定时启动Scrapy爬虫程序
定时启动爬虫 # 查看命令得绝对路径 # which scrapy # cd到爬虫得项目目录下 + scrapy命令得绝对路径 + 启动命令 */5 * * * * cd /opt/mafengwo/ ...
- ASP.NET MVC 5 03 - 安装MVC5并创建第一个应用程序
不知不觉 又逢年底, 穷的钞票 所剩无几. 朋友圈里 各种装逼, 抹抹眼泪 MVC 继续走起.. 本系列纯属学习笔记,如果哪里有错误或遗漏的地方,希望大家高调指出,当然,我肯定不会低调改正的.(开个小 ...
- Visual Studio中创建混合移动应用程序解决方案Xamarin Portable Razor
在Visual Studio中创建混合移动应用程序的一个解决方案是使用Xamarin Portable Razor工具,这是ASP.NET MVC API针对移动设备的一个轻量级实现.Xamarin编 ...
随机推荐
- mac os的android开发国内库下载地址
http://ubuntu.buct.edu.cn/android/repository/
- [struts2]struts结合ECharts的用法
<script src="http://echarts.baidu.com/build/dist/echarts-all.js"></script> < ...
- CSS入门基础
认识CSS 传统HTML设计网页版面的缺点 CSS的特点 CSS的排版样式 13.1 认识CSS CSS的英文全名是Cascading Style Sheets,中文可翻译为串接式排版样式,并且CSS ...
- (翻译)什么是Java的永久代(PermGen)内存泄漏
http://www.codelast.com/?p=7248 转载请注明出处:http://www.codelast.com/ 本文是我对这篇文章的翻译:What is a PermGen leak ...
- Citrix服务器虚拟化之三十 XenApp 6.5发布流式应用程序
Citrix服务器虚拟化之三十 XenApp 6.5发布流式应用程序 XenApp可发布以下类型的资源向用户提供信息访问,这 ...
- BLE 广播数据解析
从上一篇GATT Profile 简介中提到过,BLE 设备工作的第一步就是向外广播数据.广播数据中带有设备相关的信息.本文主要说一下 BLE 的广播中的数据的规范以及广播包的解析. 广播模式 BLE ...
- Centos7.0挂载优盘安装jdk1.7和tomcat7.0
Centos7.0挂载优盘安装jdk1.7和tomcat7.0 前言: 笔者发现用wget方法直接在服务器下载jdk和tomcat速度很慢,而且jdk1.7用wget方法下载链接不好找,不如直接从官网 ...
- setValue 和 setObject 的区别
在使用NSMutableDictionary 的时候经常会使用setValue forKey 与 setObject forKey,他们经常是可以交互使用的. 1.setValue forKey的定义 ...
- PowerDesigner使用详解
PowerDesign高级应用编写相关的VBS脚本在PowerDesign里自定义一些命令与操作等,具体的可以参考C:\Program Files\Sybase\PowerDesigner 9\VB ...
- Mac安装Mysql无法登录
Mac安装的Mysql5.7.10 执行mysql -u root -p 就要求输入密码,但是新安装是没密码的.然后就会报错. ERROR 1045 (28000): Access denied fo ...