加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP实现简单爬虫的技巧

发布时间:2022-07-24 14:36:48 所属栏目:PHP教程 来源:互联网
导读:这篇文章主要介绍了PHP实现简单爬虫的方法,涉及php页面抓取及分析的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下。 本文实例讲述了PHP实现简单爬虫的方法,分享给大家供大家参考,具体如下: ?php /** * 爬虫程序 -- 原型 * * 从给定的url获取html内
  这篇文章主要介绍了PHP实现简单爬虫的方法,涉及php页面抓取及分析的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下。
 
  本文实例讲述了PHP实现简单爬虫的方法,分享给大家供大家参考,具体如下:
 
  <?php
  /**
   * 爬虫程序 -- 原型
   *
   * 从给定的url获取html内容
   *  
   * @param string $url  
   * @return string  
   */
  function _getUrlContent($url) {
       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;
    *  
   * @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 . "rn");
        }  
      }  
    } while ($current_url = fgets($fp_gets, 1024)); //不断获得url
  }  
  main(); 

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读