• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > 详解使用PHP编写爬虫的方法

详解使用PHP编写爬虫的方法

作者:站长图库 字体:[增加 减小] 来源:互联网 时间:2022-04-29

站长图库向大家介绍了PHP编写爬虫等相关知识,希望对您有所帮助

说到爬虫,大家的第一印象就会想到Python, 但是Python并不是所有人都会的, 那么是否可以使用其他的语言来编写爬虫呢? 当然是可以的,下面介绍一下如何使用PHP编写爬虫。


获取页面html内容

1、使用函数 file_get_contents 把整个文件读入一个字符串中。

file_get_contents(path,include_path,context,start,max_length);file_get_contents('https://fengkui.net/');

这样就可以将整个页面的html内容,读入一个字符串中,然后进行解析了


2、使用CURL进行请求,获取html

/** * [curlHtml 获取页面信息] * @param  [type] $url [网址] * @return [type]      [description] */function curlHtml($url){    $curl = curl_init();    curl_setopt_array($curl, array(        CURLOPT_URL            => "{$url}",        CURLOPT_RETURNTRANSFER => true,        CURLOPT_ENCODING       => "",        CURLOPT_MAXREDIRS      => 10,        CURLOPT_TIMEOUT        => 30,        CURLOPT_HTTP_VERSION   => CURL_HTTP_VERSION_1_1,        CURLOPT_CUSTOMREQUEST  => "GET",        CURLOPT_HTTPHEADER     => array(            "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",            "Accept-Encoding: gzip, deflate, br",            "Accept-Language: zh-CN,zh;q=0.9",            "Cache-Control: no-cache",            "Connection: keep-alive",            "Pragma: no-cache",            "Upgrade-Insecure-Requests: 1",            "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36",            "cache-control: no-cache"        ),    ));    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);    $response = curl_exec($curl);    $err = curl_error($curl);    curl_close($curl);    if ($err) return false;    else return $response;}

使用Curl我们可以来进行其他操作,如模拟浏览器模拟登陆等一些高级操作。


解析页面HTML,获取所需数据

1、正则获取内容

/** * [get_tag_data 使用正则获取html内容] * @param  [type] $html  [爬取的页面内容] * @param  [type] $tag   [要查找的标签] * @param  [type] $attr  [要查找的属性名] * @param  [type] $value [属性名对应的值] * @return [type]        [description] */function get_tag_data($html,$tag,$attr,$value){    $regex = "/<$tag.*?$attr=\".*?$value.*?\".*?>(.*?)<\/$tag>/is";    preg_match_all($regex,$html,$matches,PREG_PATTERN_ORDER);    $data = isset($matches[1][0]) ? $matches[1][0] : '';    return $data;}$str = '<div class="feng">冯奎博客</div>';$value = get_tag_data($str, 'div', 'class', 'feng');


2、使用Xpath解析数据

XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。 具体使用方法及相关介绍查看百度百科(XPath) 使用方法:

/** * [get_html_data 使用xpath对获取到的html内容进行处理] * @param  [type]  $html [爬取的页面内容] * @param  [type]  $path [Xpath语句] * @param  integer $tag  [类型 0内容 1标签内容 自定义标签] * @param  boolean $type [单个 还是多个(默认单个时输出单个)] * @return [type]        [description] */function get_html_data($html,$path,$tag=1,$type=true){    $dom = new \DOMDocument();    @$dom->loadHTML("<?xml encoding='UTF-8'>" . $html); // 从一个字符串加载HTML并设置UTF8编码    $dom->normalize(); // 使该HTML规范化    $xpath = new \DOMXPath($dom); //用DOMXpath加载DOM,用于查询    $contents = $xpath->query($path); // 获取所有内容    $data = [];    foreach ($contents as $value) {        if ($tag==1) {            $data[] = $value->nodeValue; // 获取不带标签内容        } elseif ($tag==2) {            $data[] = $dom->saveHtml($value);  // 获取带标签内容        } else {            $data[] = $value->attributes->getNamedItem($tag)->nodeValue; // 获取attr内容        }    }    if (count($data)==1) {        $data = $data[0];    }    return $data;}


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2022-04-29如何解决thinkphp new self()报错问题
  • 2022-04-29Mysql如何查询navicat中的blob类型内容
  • 2022-04-29搜索引擎营销中作弊的方式—链接作弊
  • 2022-04-29手把手教你在微信小程序中使用canvas绘制天气折线图(附代码)
  • 2022-04-29带你了解Angular中的组件通讯和依赖注入
  • 2022-04-29MySQL数据库的root密码忘记该怎么办
  • 2022-04-29解决WordPress评论加强:防止游客冒充站长回复别人的办法
  • 2022-04-29Photoshop设计绚丽的3D艺术字教程
  • 2022-04-29教你使用在Homestead中版本管理工具切换PHP版本
  • 2022-04-29手把手带你在小程序中怎么实现3d裸眼轮播效果

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • AI制作数字通道效果
    • 四种方式快速实现上拉触底加载效果
    • Photoshop设计炫彩效果的光环标志教程
    • 详解Composer+Git怎么创建 “服务类库”
    • VUE动态添加的路由页面刷新时失效的原因及解决方案
    • CentOS7如何使用yum安装PHP7.3
    • Photoshop鼠绘蓝色进度圈
    • 微信小程序如何获取到openid和session_key
    • Photoshop制作绚丽的万花筒背景教程
    • javascript如何解决url中文乱码问题

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有