温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

使用PHP编写爬虫的方法

发布时间:2021-07-18 00:21:02 来源:亿速云 阅读:342 作者:chen 栏目:编程语言

本篇内容介绍了“使用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; }

“使用PHP编写爬虫的方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php
AI