php curl抓取网页指定内容(phpcurl采集页面_html_dom解析,侵删推广)

优采云 发布时间: 2021-12-02 11:20

  php curl抓取网页指定内容(phpcurl采集页面_html_dom解析,侵删推广)

  有的人看小说看习惯了,偶尔看几章。都是百度发布的,但基本上都是特别烦人的广告,或者是在整体div上加了链接,误触跳转到某些网站甚至无限循环。一些手机app也有很多广告,所以我可以写一个小程序来避免广告的烦恼。

  本文将使用php curl采集页面simple_html_dom进行解析,实现真正去除广告。

  随便找一本小说网站找书,但是这个网站在手机上特别棘手,而且存在以上问题:

  

  以这本小说为借口。(免责声明:绝对不是宣传、侵扰)

  一、了解curl的get方法

  curl是一个命令行工具,通过指定的URL上传或下载数据,并显示数据。curl 中的 c 表示客户端,URL 表示 URL。

  PHP中使用cURL实现Get和Post请求方法

  只需抓取小说,只需要 get 方法。

  以下示例代码是通过get请求获取第一章小说页面html的示例。您只需要更改 url 参数。

  初始化、设置选项、证书验证、执行、关闭

  评论特别详细。按照步骤发送 curl get 请求。如果是post请求,需要再增加一个设置来设置post选项,并传递参数,最后输出获取到的信息。运行结果如下,没有CSS渲染。

  

  二、 解析页面

  输出页面有很多不必要的内容。我们需要从所有的内容中提取我们需要的内容,比如标题和每章的内容。这时候就需要对页面进行解析。

  有很多方法可以解析页面。此处使用 simple_html_dom。您需要下载并引用 simple_html_dom.php 类、实例对象,并调用内部方法。具体方法可以在官网查看,也可以在中文网站上查看其他文档。

  先分析这个小说页面的源码,看本章标题和内容的对应元素

  首先是标题:类书名下的h1下

  

  然后内容:在id为content的div下

  

  Simple_html_dom可以使用find方法,类似于jquery,使用选择器来查找定位元素。喜欢:

  find('.bookname h1'); //找到类书名下的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>.*?)|(.*?)/";

$artic[&#039;content&#039;] = preg_replace($pattern,&#039;&#039;,$content);

echo $artic[&#039;title&#039;].&#039;

&#039;;

echo $artic[&#039;content&#039;];

  使用上述分析方法得到的内容是一个数组。使用foreach获取数组内容,使用正则替换去除正文文本广告,将标题和小说内容放入数组中。最简单的写法就完成了。运行结果如下:

  

  当然这种写法看起来更难受,可以自己封装函数类。以下是我自己编写的代码示例。当然也有一些不足,但是可以作为参考扩展。

  以上示例代码的最终运行结果: 前几章,通过$_GET['n']输入数字并传递参数

  

  总结:

  知识点:curl(提示:curl模块采集任意网页php类)、正则、解析工具simple_html_dom

  虽然写法已经初步完善,但最好自己部署服务器,效果最佳。否则只能在电脑上看,不太方便,而且你可能更愿意容忍广告。

  以上就是使用php curl采集页面,使用simple_html_dom解析的详细内容!

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线