PHP实现最简单爬虫原型
来源:互联网 发布:淘宝店铺布局怎么设计 编辑:程序博客网 时间:2024/05/16 14:35
<?php/** * 爬虫程序 -- 原型 * * BookMoth 2009-02-21 *//** * 从给定的url获取html内容 * * @param string $url * @return string */function _getUrlContent($url) { $handle = fopen($url, "r"); if ($handle) { $content = stream_get_contents($handle, 1024 * 1024); return $content; } else { return false; }}/** * 从html内容中筛选链接 * * @param string $web_content * @return array */function _filterUrl($web_content) { $reg_tag_a = '/<[a|A].*?href=[\'\"]{0,1}([^>\'\"\ ]*).*?>/'; $result = preg_match_all($reg_tag_a, $web_content, $match_result); if ($result) { return $match_result[1]; }}/** * 修正相对路径 * * @param string $base_url * @param array $url_list * @return array */function _reviseUrl($base_url, $url_list) { $url_info = parse_url($base_url); $base_url = $url_info["scheme"] . '://'; if ($url_info["user"] && $url_info["pass"]) { $base_url .= $url_info["user"] . ":" . $url_info["pass"] . "@"; } $base_url .= $url_info["host"]; if ($url_info["port"]) { $base_url .= ":" . $url_info["port"]; } $base_url .= $url_info["path"]; print_r($base_url); if (is_array($url_list)) { foreach ($url_list as $url_item) { if (preg_match('/^http/', $url_item)) { //已经是完整的url $result[] = $url_item; } else { //不完整的url $real_url = $base_url . '/' . $url_item; $result[] = $real_url; } } return $result; } else { return; }}/** * 爬虫 * * @param string $url * @return array */function crawler($url) { $content = _getUrlContent($url); if ($content) { $url_list = _reviseUrl($url, _filterUrl($content)); if ($url_list) { return $url_list; } else { return; } } else { return; }}/** * 测试用主程序 * */function main() { $current_url = "http://hao123.com/"; //初始url $fp_puts = fopen("url.txt", "ab"); //记录url列表 $fp_gets = fopen("url.txt", "r"); //保存url列表 do { $result_url_arr = crawler($current_url); if ($result_url_arr) { foreach ($result_url_arr as $url) { fputs($fp_puts, $url . "\r\n"); } } } while ($current_url = fgets($fp_gets, 1024)); //不断获得url}main();?>
最简单的爬虫模型应该是这样的:给一个初始url,爬虫把内容扒下拉,找页面里的url,在以这些url为起点,开始爬。
上面是一个最简单的php实现的爬虫模型。
当然这只爬虫还需要进行下面的进化才可以:
1、拼接更准确的url链接。现在的链接有可能是格式错误的。
2、能够去掉重复的url链接。现在的爬虫会做非常多非常多的重复工作。
3、避免爬虫怕成环路,一个永远右转的车,只能是300内环,它只会跑在三环路上,去不了别的地方。
4、多线程或者多进程。因为php没有线程的概念,所以可能需要shell这样的东西来模拟了。
5、……略去2的N次方个汉字。
反正是意思一下就好了~
转自:http://www.xjq123.com/html/33/n-13433.html点击打开链接
- PHP实现最简单爬虫原型
- PHP实现最简单爬虫原型
- 利用php实现最简单的爬虫
- php 实现简单爬虫
- PHP实现的一个简单的爬虫
- 一个PHP实现的轻量级简单爬虫
- 一个PHP实现的轻量级简单爬虫
- 一个最简单的网络爬虫的实现
- PHP实现最简单的登录注册
- PHP实现最简单的聊天室应用
- php 简单爬虫
- php简单爬虫
- php网页简单爬虫
- php实现原型模式
- 最简单的python爬虫
- python最简单的爬虫
- 最简单的python 爬虫
- scala 实现简单爬虫
- 控制Dialog 的背景方法
- Hibernate入门BLOG [二、封装拿到数据库配置session对象、并且执行操作]
- 铁道部体制改革初步方案将定
- 删除Personal Geodatabase中的FeatureClass
- ubuntu12.04+firefox13+jdk7+applet
- PHP实现最简单爬虫原型
- 近一个月小结
- Windows下的编译选项:/WX, /wd
- Android 图片处理方法大全
- C#让控件全屏。退出全屏
- 一个it老总对于新人的一点建议
- 【精品珍藏】C、C++热门精品资料集(共110个)
- Qt 地图浏览器:使用QGraphicsView
- RAID阵列级别的选择