PHP实现简单爬虫的方法,php实现爬虫

本文实例讲述了PHP实现简单爬虫的方法。分享给大家供大家参考。具体如下:

<?php /** * 爬虫程序 -- 原型 * * 从给定的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=pregmatchall(result = preg_match_all(result=pregm​atcha​ll(reg_tag_a, $web_content, matchresult);if(match_result); if (matchr​esult);if(result) {
return $match_result[1];
}
}
/**

  • 修正相对路径
  • @param string $base_url
  • @param array $url_list
  • @return array
    /
    function _reviseUrl($base_url, $url_list) {
    urlinfo=parseurl(url_info = parse_url(urli​nfo=parseu​rl(base_url);
    $base_url = urlinfo["scheme"].′://′;if(url_info["scheme"] . '://'; if (urli​nfo["scheme"].′://′;if(url_info[“user”] && $url_info[“pass”]) {
    $base_url .= $url_info[“user”] . “:” . $url_info[“pass”] . “@”;
    }
    $base_url .= urlinfo["host"];if(url_info["host"]; if (urli​nfo["host"];if(url_info[“port”]) {
    $base_url .= “:” . $url_info[“port”];
    }
    $base_url .= urlinfo["path"];printr(url_info["path"]; print_r(urli​nfo["path"];printr​(base_url);
    if (is_array(KaTeX parse error: Expected '}', got 'EOF' at end of input: …)) { 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(content = _getUrlContent(content=g​etUrlContent(url);
    if ($content) {
    urllist=reviseUrl(url_list = _reviseUrl(urll​ist=r​eviseUrl(url, _filterUrl(content));if(content)); if (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 {
    resulturlarr=crawler(result_url_arr = crawler(resultu​rla​rr=crawler(current_url);
    if (KaTeX parse error: Expected '}', got 'EOF' at end of input: … { foreach (result_url_arr as KaTeX parse error: Expected '}', got 'EOF' at end of input: …) { fputs(fp_puts, KaTeX parse error: Undefined control sequence: \n at position 10: url . "\r\̲n̲"); } } }…current_url = fgets($fp_gets, 1024)); //不断获得url
    }
    main();
    ?>

PHP实现简单爬虫的方法相关推荐

  1. python_2开发简单爬虫

    2017年12月03日 16:43:01 独行侠的守望 阅读数:204 标签: python爬虫 更多 个人分类: Python 编辑 版权声明:本文为博主原创文章,转载请注明文章链接. https: ...

  2. Golang实现简单爬虫框架(4)——队列实现并发任务调度

    前言 在上一篇文章<Golang实现简单爬虫框架(3)--简单并发版>中我们实现了一个最简单并发爬虫,调度器为每一个Request创建一个goroutine,每个goroutine往Wor ...

  3. python简单爬虫程序分析_[Python专题学习]-python开发简单爬虫

    掌握开发轻量级爬虫,这里的案例是不需要登录的静态网页抓取.涉及爬虫简介.简单爬虫架构.URL管理器.网页下载器(urllib2).网页解析器(BeautifulSoup) 一.爬虫简介以及爬虫的技术价 ...

  4. 使用HttpClient实现一个简单爬虫,抓取煎蛋妹子图

    第一篇文章,就从一个简单爬虫开始吧. 这只虫子的功能很简单,抓取到"煎蛋网xxoo"网页(http://jandan.net/ooxx/page-1537),解析出其中的妹子图,保 ...

  5. .net core 实现简单爬虫—抓取博客园的博文列表

    一.介绍一个Http请求框架HttpCode.Core HttpCode.Core 源自于HttpCode(传送门),不同的是 HttpCode.Core是基于.net standard 2.0实现的 ...

  6. python 百度百科 爬虫_python简单爬虫

    爬虫真是一件有意思的事儿啊,之前写过爬虫,用的是urllib2.BeautifulSoup实现简单爬虫,scrapy也有实现过.最近想更好的学习爬虫,那么就尽可能的做记录吧.这篇博客就我今天的一个学习 ...

  7. python爬虫ip限制_简单爬虫,突破IP访问限制和复杂验证码,小总结

    简单爬虫,突破复杂验证码和IP访问限制 好吧,看题目就知道我是要写一个爬虫,这个爬虫的目标网站有一些反爬取意识,所以就有了本文了. 我先说说场景吧: 由于工作需要,平时有一大堆数据需要在网上查询,并归 ...

  8. SpringBoot-Jsoup做java简单-爬虫

    使用SpringBoot+Jsoup做java简单'爬虫' Jsoup简介 Jsoup是一款java的Html解析器,可以直接解析Html.针对网页提供了相关Api,可以通过Dom.Css.Jquer ...

  9. Golang实现简单爬虫框架(5)——项目重构与数据存储

    前言 在上一篇文章<Golang实现简单爬虫框架(4)--队列实现并发任务调度>中,我们使用用队列实现了任务调度,接下来首先对两种并发方式做一个同构,使代码统一.然后添加数据存储模块. 注 ...

最新文章

  1. 自定义ClassLoader实现java应用核心逻辑模块热部署
  2. 2050 Programming Competition (CCPC)
  3. 【PyQT5编程】Pycharm结合QtDesigner使用示例:创建登录窗体
  4. 2020年第十一届蓝桥杯 - 省赛 - Python大学组 - C.跑步锻炼
  5. asp.net 日期转换
  6. 华为云服务怎么弄金卡会员_万科牵手华为终端云服务,共建松山湖智慧商圈
  7. 开源监控Prometheus二进制安装
  8. 冒泡、鸡尾酒、选择、插入、归并、快速排序的C++程序
  9. oracle表空间查询维护命令大全之二(undo表空间)
  10. Learning Modern 3D Graphics Programming笔记
  11. 谷歌探月大赛确定29支队伍 最高奖金2000万美元
  12. Rust语言学习大纲
  13. Windows 7 - 使用批处理脚本模拟Windows XP中的msbackup备份程序
  14. 欧盟百万欧元悬赏开源软件漏洞惹争议,被评本末倒置
  15. 博途1200/1500PLC斜坡指令RAMP(带暂停功能)
  16. 解析Linux商业应用现状
  17. Android 应用开发
  18. 如何做一个好的PPT演讲
  19. 豆瓣排行榜1--get携带params作为url参数去请求
  20. MySQL之连接查询+分页查询+联合查询

热门文章

  1. wordpress图片插件_14个最适合WordPress的精选图片插件和教程
  2. JQuery.Fireworks烟花特效React版
  3. 从 JavaScript 明星项目看前端发展
  4. 学计算机要自己买电脑吗,大一新生有必要买电脑吗?辅导员给出理由,高考生快来看看...
  5. CAD自动保存的文件在哪里?CAD自动保存位置怎么设置
  6. Android adb 设置移除代理
  7. 锐捷(九)锐捷设备恢复,更改密码
  8. 《降临》作者特德·姜:ChatGPT是网上所有文本的模糊图像
  9. 欢欣雀跃服务器维护到几点,魔兽世界:TBC法师AOE无上限,工作室欢呼雀跃,暴雪蓝贴澄清真相...
  10. 何星火致全体镇邦会战友的一封信