本文将应用php curl采集页面simple_html_dom解析,完成真实的去除了告白。
随意找一个小说网站找一本书,不外这个站点正在手机端是特地坑的,就有上述成绩:
就拿这本小说来开刀。(申明:相对没有是推行,侵删)
1、理解curl的get形式
curl是一个饬令行对象,经过指定的URL来上传或下载数据,并将数据展现进去。curl中的c示意client,而URL,就是URL。
PHP中应用cURL能够完成Get以及Post申请的办法
简略的抓取小说仅需求get办法便可。
上面这个示例代码就是经过get申请猎取第一章小说页面html的示例,只要要更改url参数便可。
初始化、设置选项、证书验证、执行、封闭
<?php header("Content-Type:text/html;charset=utf-8"); $url="https://www.7kzw.com/85/85445/27248636.html"; $ch = curl_init($url); //初始化 //设置选项 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//猎取的信息以字符串前往,而没有是间接输入(必需) curl_setopt($ch,CURLOPT_TIMEOUT,10);//超不时间(必需) curl_setopt($ch, CURLOPT_HEADER,0);// 启历时会将头文件的信息作为数据流输入。 //参数为1示意输入信息头,为0示意没有输入 curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); //没有验证证书 // 3.执行 $res = curl_exec($ch); // 4.封闭 curl_close($ch); print_r($res); ?>
正文就特地具体了,依照步骤,发送curl的get申请,假如是post申请则需求多加一条设置post选项的设置,而且传参,最初输入取得的信息,运转后果以下,是不css衬着的。
2、解析页面
输入的页面有不少没有需求的内容,需求正在一切内容中提掏出咱们需求的内容,比方题目以及每一章的内容,这时候需求解析页面。
解析页面的办法也有不少,正在这里应用的是simple_html_dom,需求下载援用simple_html_dom.php这个类,实例工具,并挪用外部的办法。详细办法能够到官网查看,或许中文网其余文档。
先剖析这个小说页面的源代码,看这章的题目以及内容对应的元素
起首是题目:正在类bookname下的h1下
而后是内容:正在id为content的div下
simple_html_dom的能够应用find办法,相似jquery同样应用抉择器查找定位元素。如:
find('.bookname h1'); //查找类bookname 下的h1题目元素
find('#content'); //查找id为content的章节内容
代码正在以上的根底上新增:
include "simple_html_dom.php"; $html = new simple_html_dom(); @$html->load($res); $h1 = $html->find('.bookname h1'); foreach ($h1 as $k=>$v) { $artic['title'] = $v->innertext; } // 查找小说的详细内容 $divs = $html->find('#content'); foreach ($divs as $k=>$v) { $content = $v->innertext; } // 正则交换去除了过剩局部 $pattern = "/(<p>.*?<\/p>)|(<div .*?>.*?<\/div>)/"; $artic['content'] = preg_replace($pattern,'',$content); echo $artic['title'].'<br>'; echo $artic['content'];
应用以上的解析办法取得的内容是数组,应用foreach来取得数组内容,应用了正则交换将注释文字告白去除了,将题目以及小说内容放到数组内。最简略的写法就写好了。运转后果以下:
当然这类写法看着比拟舒服,能够自行封装函数类。以下就是我本人写好的代码示例了,当然一定有有余之处,然而能够作为参考扩大。
<?php include "simple_html_dom.php"; include "mySpClass.php"; header("Content-Type:text/html;charset=utf-8"); $get_html = get_html($_GET['n']); $artic = getContent($get_html); echo $artic['title'].'<br>'; echo $artic['content']; /** * 猎取www.7kzw.com 猎取每一一章的页面html * @param type $num 第几章,从第一开端(int) * @return 前往字符串 */ function get_html($num){ $start = 27248636; $real_num = $num+$start-1; $url = 'https://www.7kzw.com/85/85445/'.$real_num.'.html'; $header = [ 'User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0' ]; return mySpClass()->getCurl($url,$header); } /** * 猎取www.7kzw.com小说题目数组 * @param type $get_html 失去的每一一章的页面html * @return 前往$artic数组,['title'=>'','content'=>''] */ function getContent($get_html){ $html = new simple_html_dom(); @$html->load($get_html); $h1 = $html->find('.bookname h1'); foreach ($h1 as $k=>$v) { $artic['title'] = $v->innertext; } // 查找小说的详细内容 $divs = $html->find('#content'); foreach ($divs as $k=>$v) { $content = $v->innertext; } // 正则交换去除了过剩局部 $pattern = "/(<p>.*?<\/p>)|(<div .*?>.*?<\/div>)/"; $artic['content'] = preg_replace($pattern,'',$content); return $artic; } ?>
<?php class mySpClass{ //单例工具 private static $ins = null; /** * 单例化工具 */ public static function exec() { if (self::$ins) { return self::$ins; } return self::$ins = new self(); } /** * 制止克隆工具 */ public function __clone() { throw new curlException('谬误:不克不及克隆工具'); } // 向效劳器发送最简略的get申请 public static function getCurl($url,$header){ // 1.初始化 $ch = curl_init($url); //申请的地点 // 2.设置选项 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//猎取的信息以字符串前往,而没有是间接输入(必需) curl_setopt($ch,CURLOPT_TIMEOUT,10);//超不时间(必需) curl_setopt($ch, CURLOPT_HEADER,0);// 启历时会将头文件的信息作为数据流输入。 //参数为1示意输入信息头,为0示意没有输入 curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); //没有验证证书 curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false); //没有验证证书 if(!empty($header)){ curl_setopt($ch,CURLOPT_HTTPHEADER,$header);//设置头信息 } // 3.执行 $res = curl_exec($ch); // 4.封闭 curl_close($ch); return $res; } } //curl办法没有存正在就设置一个curl办法 if (!function_exists('mySpClass')) { function mySpClass() { return mySpClass::exec(); } } ?>
以上示例代码的终极运转后果:第几章就输出数字几,经过$_GET['n']传参
总结:
常识点:curl(tips:curl模块采集恣意网页php类),正则,解析对象simple_html_dom
尽管写法曾经初步欠缺,然而最佳能过部署的本人的效劳器能力有最佳的成果,否则只能正在电脑寓目,也没有见患上多不便,可能更情愿忍忍告白了。
以上就是应用php curl采集页面并应用simple_html_dom解析的具体内容,更多请存眷资源魔其它相干文章!
以上就是顺序员还看带告白的小说?的具体内容,更多请存眷资源魔其它相干文章!
标签: php开发教程 php开发资料 php开发自学 程序员
抱歉,评论功能暂时关闭!