PHP实现简单爬虫的方法

news/2024/7/19 11:20:59 标签: php, 爬虫, 开发语言

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}([^>\'\"\ ]*).*?>/';

r e s u l t = p r e g m a t c h a l l ( result = preg_match_all( result=pregmatchall(reg_tag_a, $web_content, m a t c h r e s u l t ) ; i f ( match_result); if ( matchresult);if(result) {
return $match_result[1];
}
}
/**

  • 修正相对路径
  • @param string $base_url
  • @param array $url_list
  • @return array
    /
    function _reviseUrl($base_url, $url_list) {
    u r l i n f o = p a r s e u r l ( url_info = parse_url( urlinfo=parseurl(base_url);
    $base_url = u r l i n f o [ " s c h e m e " ] . ′ : / / ′ ; i f ( url_info["scheme"] . '://'; if ( urlinfo["scheme"].://;if(url_info[“user”] && $url_info[“pass”]) {
    $base_url .= $url_info[“user”] . “:” . $url_info[“pass”] . “@”;
    }
    $base_url .= u r l i n f o [ " h o s t " ] ; i f ( url_info["host"]; if ( urlinfo["host"];if(url_info[“port”]) {
    $base_url .= “:” . $url_info[“port”];
    }
    $base_url .= u r l i n f o [ " p a t h " ] ; p r i n t r ( url_info["path"]; print_r( urlinfo["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) {
    c o n t e n t = g e t U r l C o n t e n t ( content = _getUrlContent( content=getUrlContent(url);
    if ($content) {
    u r l l i s t = r e v i s e U r l ( url_list = _reviseUrl( urllist=reviseUrl(url, _filterUrl( c o n t e n t ) ) ; i f ( 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 {
    r e s u l t u r l a r r = c r a w l e r ( result_url_arr = crawler( resulturlarr=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();
    ?>

http://www.niftyadmin.cn/n/128145.html

相关文章

数据模型(上):模型分类和模型组成

1.模型分类 ​ 数据模型是一种由符号、文本组成的集合,用以准确表达信息景观,达到有效交流、沟通的目的。数据建模者要求能与来自不同部门,具有不同技术背景,不同业务经验,不同技术水平的人员交流、沟通。数据建模者要了解每个人员的观点,并通过反馈证明理解无误,最终作…

动环监控4大应用价值,这个价值最大

机房管理&#xff0c;已成为企业管理和发展的首要任务。为提升机房管理的效率&#xff0c;应从空间环境、设备性能等多角度&#xff0c;对机房环境监测进行实时监控掌握相关数据参数&#xff0c;确保故障隐患及时发现&#xff0c;提高机房整体管理水平&#xff0c;降低运维难度…

数据的标准化处理

假设各个指标之间的水平相差很大&#xff0c;此时直接使用原始指标进行分析时&#xff0c;数值较大的指标&#xff0c;在评价模型中的绝对作用就会显得较为突出和重要&#xff0c;而数值较小的指标&#xff0c;其作用则可能就会显得微不足道。 因此&#xff0c;为了统一比较的标…

I.MX6ULL_Linux_系统篇(23) busybox文件系统构建

Linux“三巨头”已经完成了 2 个了&#xff0c;就剩最后一个 rootfs(根文件系统)了&#xff0c;本章我们就来学习一下根文件系统的组成以及如何构建根文件系统。这是 Linux 移植的最后一步&#xff0c;根文件系统构建好以后就意味着我们已经拥有了一个完整的、可以运行的最小系…

NLP - IRSTLM、SRILM

文章目录IRSTLM关于 IRSTLM安装SRILM关于 SRILM安装使用 ngram-countKenLM 的安装使用&#xff0c;可参考文章&#xff1a; https://blog.csdn.net/lovechris00/article/details/125424808 IRSTLM 关于 IRSTLM github : https://github.com/irstlm-team/irstlm官方主页&#…

Redis锁与幂等性不得不说的故事

前言&#xff1a; 相信很多小伙伴对缓存锁都不陌生&#xff0c;但是简单的缓存锁想要用好还是需要一些功力。本文总结了笔者多年使用缓存所的一些心得&#xff0c;欢迎交流探讨~ 幂等模型&#xff1a; 幂等场景一般由查重写入两步操作组成&#xff0c;两步操作组成一个最小完…

图表控件TeeChart for .NET系列教程六:将数据添加到系列中(使用系列)

TeeChart for .NET是优秀的工业4.0 WinForm图表控件&#xff0c;官方独家授权汉化&#xff0c;集功能全面、性能稳定、价格实惠等优势于一体。TeeChart for .NET 中文版还可让您在使用和学习上没有任何语言障碍&#xff0c;至少可以节省30%的开发时间。 TeeChart for .NET最新…

企业微信的后台怎么进入和管理?

企业微信管理后台&#xff0c;只有企业的管理员才可以进企业微信后台&#xff0c;普通员工想要进入后台、可以联系管理员将你设置为后台管理员。 一、怎么进入企业微信后台 管理员进入企业微信后台有两种路径&#xff1b; 路径一&#xff1a; 企业管理员直接在浏览器搜索企…