php抓取页面生成html,PHP smiple html dom抓取页面内容

之前做页面抓取,数据采集等功能的时候,第一个想到的就是用正则表达式去匹配页面内容。但是对于像我这种,正则只懂皮毛的人来说,写正则是真的很恶心的一件事。去网上找,也不一定能改成自己需要的正则。

今天给大家推荐一个很好用的工具smiple html dom。

文档地址:http://www.phpddt.com/manual/simplehtmldom_1_5/manual.htm

解析器不仅仅只是帮助我们验证html文档;更能解析不符合W3C标准的html文档。它使用了类似jQuery的元素选择器,通过元素的id,class,tag等等来查找定位;同时还提供添加、删除、修改文档树的功能。当然,这样一款强大的html Dom解析器也不是尽善尽美;在使用的过程中需要十分小心内存消耗的情况。不过,不要担心;本文中,笔者在最后会为各位介绍如何避免消耗过多的内存。

下面是我解析的mm131.com的页面内容代码,主要是盗链他的图片,O(∩_∩)O哈哈~

index.php

require './dom/simple_html_dom.php';

require './include/function.php';

//打开错误信息

error_reporting(E_ERROR | E_WARNING | E_PARSE);

$count = 0;

error_reporting(0);

$url = trim(post("url"));

$str = '';

if($url){

$html = new simple_html_dom();

$html->load_file($url.'.html');

$ret = $html->find('.content-pic img');

$title = $html->find("title",0);

echo str_ireplace("www.mm131.com","",iconv("GBK","UTF-8",$title->innertext))."
";

foreach($ret as $v){

if($v->src){

$str .= $v->src."\n";

$count++;

}

}

flush();

for($i = 2;$i 

$html->clear();

$location = $url.'_'.$i.'.html';

if(!GetCurl($location)){

break;

}

$html->load_file($location);

$ret = $html->find('.content-pic img');

foreach($ret as $v){

if($v->src){

$str .= $v->src."\n";

$count++;

}

}

flush();

}

echo $count;

}

以上3个代码块都是index.php的内容。

其中的require './dom/simple_html_dom.php'; 即引用的simple html dom 解析器。

function.php 只是封装了2个方法 代码如下:function GetCurl($url){

$ch = curl_init();

curl_setopt($ch,CURLOPT_URL,$url);

curl_setopt($ch, CURLOPT_HEADER, true);

curl_setopt($ch, CURLOPT_NOBODY,true);

curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION,true);

curl_setopt($ch, CURLOPT_AUTOREFERER,true);

curl_setopt($ch, CURLOPT_TIMEOUT,30);

$rtn = curl_exec($ch);

curl_exec($ch);

if(strpos($rtn,'404 Not Found')==true) {

return false;

}

return true;

}

function post($id) {

return isset ( $_POST [$id] ) ? $_POST [$id] : '';

}

如何避免解析器消耗过多内存在本文的开篇中,笔者就提到了Simple HTML DOM解析器消耗内存过多的问题。如果php脚本占用内存太多,会导致网站停止响应等一系列严重的问题。解决的方法也很简单,在解析器加载html文档并使用完成后,记得清理掉这个对象就可以了。当然,也不要把问题看得太严重了。如果只是加载了2、3个文档,清理或不清理是没有多大区别的。当你加载了5个10个甚至更多的文档的时候,用完一个就清理一下内存绝对是对自己负责啦^_^

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506088.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java商城_java网上商城系统怎么样?优势又有哪些?

导读:大家都知道Java是一款非常实用的开发语言,而通过Java开发的商城吸引也因为其强大安全性能与使用性能等优势受到了很多企业商家的青睐,那么一款功能丰富的Java商城系统也自然成为...大家都知道Java是一款非常实用的开发语言,而…

php socket keepalive,linux keepalive探测对应用层socket api的影响

问题大部分人都知道tcp的keepalive. 假设读者知道keepalive会如何触发. 这篇文章想讨论keepalive触发后, 对socket使用者的影响.keepalive设置修改/etc/sysctl.confubuntu# vim /etc/sysctl.confubuntu# sysctl -pfs.file-max 131072net.ipv4.tcp_keepalive_time 10net.ipv4.…

qt 文字倾斜投影_帅呆!钢铁侠中的激光投影键盘终于量产了,炫酷又好用

看过电影《钢铁侠》的朋友,估计都会被钢铁侠的各种黑科技所折服,比如钢铁装甲、全息投影、人工智能贾维斯等等。不过这些黑科技想要实现还需要一段时间。但其中有一项黑科技已经被国产厂商实现了,那就是——激光投影键盘。早在去年&#xff0…

手机投电脑_把王者荣耀投屏到电脑上玩更爽哦——投屏神器幕享

今天给大家介绍一款投屏神器,它叫做幕享。直接摆观点——现今最好用的投屏工具,没有之一!它是全平台都有的软件哦,这意味着除了电脑,你还可以在安卓市场和Appstore下载到它。三个平台都有意味着什么呢,心细…

清华大学镜像_国内开源镜像站信息盘点

一、前言开源镜像站点是一个放置开源系统镜像文件的站点,免费提供镜像文件下载服务,可以刻盘也可以直接用虚拟光驱安装操作系统、开源软件、Linux源码网站。目前,各大高校都纷纷建立了自己的镜像站,一些有实力的大厂也开始为开源事…

php ci上传图片,CodeIgniter上传图片成功的全部过程分享

/*注意,这里是userfile,$this->upload->do_upload(),这里do_upload默认上传文件的表单名为userfile;当然也可以使用do_upload($filename),这里的$filename一定要和form_upload()里面的字符串一致.我在这里范了糊涂,最后看了手册才明白,希望大家注意哦!*/controller代码: …

labview圆环里实物动画图形_有趣的图形教案

有趣的图形教案作为一名优秀的教育工作者,通常会被要求编写教案,教案是保证教学取得成功、提高教学质量的基本条件。怎样写教案才更能起到其作用呢?以下是小编为大家整理的有趣的图形教案,希望对大家有所帮助。有趣的图形教案1活动…

python原理书籍_python书籍推荐:《深入浅出深度学习:原理剖析与Python实践》

在过去的这十年,深度学习已经席卷了整个科技界和工业界,2016年谷歌阿尔法狗打败围棋世界冠军李世石,更是使其成为备受瞩目的技术焦点。今日,小编就为大家推荐一本能让初学者和“老司机”同样感到非常有用的机器学习图书——《深入…

java kcp,重新认识KCP - osc_rreaoxa0的个人空间 - OSCHINA - 中文开源技术交流社区

什么是KCPKCP是一种网络传输协议(A Fast and Reliable ARQ Protocol),可以视它为TCP的代替品,但是它运行于用户空间,它不管底层的发送与接收,只是个纯算法实现可靠传输,它的特点是牺牲带宽来降低延迟。因为TCP协议的大…

python科学计算第三版-python科学计算pdf下载

python科学计算第二版是一本Python语言基础教程,由张若愚编著,小编从网上收集而来,为各位免费提供下载和阅读;本书将使用Python各种扩展库完成数值计算、界面制作、三维可视化、图像处理、提高运算速度等任务。 ​python科学计算第…

pakeage php国内镜像,Packagist/Composer中国全量镜像 | 严佳冬

有两种方式启用本镜像服务:1.将配置信息添加到 Composer 的配置文件 config.json 中(系统全局配置)。2.将配置信息添加到单个项目的 composer.json 文件中(单个项目配置)。1:修改 composer 的全局配置文件(推荐方式)打开命令行窗口(windows用户)或控制台…

分割函数python_python strip() 函数和 split() 函数的详解及实例

一直以来都分不清楚strip和split的功能,实际上strip是删除的意思;而split则是分割的意思。因此也表示了这两个功能是完全不一样的,strip可以删除字符串的某些字符,而split则是根据规定的字符将字符串进行分割。下面就详细说一下这…

安卓 图像清晰度识别_螺柱焊位置识别算法初稿

为了保证螺柱焊接时,螺柱焊接位置和螺柱所在凸台偏差太远带来的抱怨,打算采用图像识别的方法识别螺柱在所焊接凸台位置是否居中;在凸台上的的螺柱焊通过计算凸台圆弧的圆心和螺柱的圆心偏差来判断螺柱是否在凸台的中心,分以下几个…

matlab库存点仿真教程,基于MATLABSimulink库存系统建模与仿真.doc

基于MATLABSimulink库存系统建模与仿真基于MATLABSimulink库存系统建模与仿真摘要:库存系统是管理系统中最普遍的一种,在库存系统中要通过不同的需求情况,确定何时订货和定多少货为宜。本文通过对经济批量订货库存系统的分析,建立…

python 执行文件内容_python执行文件

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云文件存储NAS是一个可共享访问&#xf…

电脑音频服务未运行怎么解决_电脑故障维修技巧教程:新手必看的修电脑技巧!...

日常生活工作中,我们的电脑总会出现各种各样的问题,如果掌握了一定的通用修电脑技巧,除了可以解决问题,说不定还能得到帮女神修电脑的机会,俗话说的好,电脑修的好,对象少不了!电脑故…

vue 保留小数点厚一位_2019黑龙江公务员考试行测资料分析:保留有效数字巧解对位数相乘...

在行测考试中,资料分析是很重要的一部分,同学们也都知道这一部分是绝对不能放弃的。资料分析在做题的时候无非就是找数据、列式,最后再计算,那么这个时候问题就来了:数据找得到,列式也能列得对,…

matlab输出高分辨率图片有白色毛刺,科学网—图片空白边缘处理/统计直方图---matlab/保存生成高质量的清晰图 - 杨小林的博文...

这里介绍hist函数结合bar函数绘制统计直方图一组原始采集数据,如:data[2 3 -4 -1 4 -5 1 5 -2 -3]; 数据范围为range-5:5;首先可以采用hist函数进行分组:nhist(data,range); 将数据data根据range进行分组;返回数组n,n的…

cad计算总长度插件_超实用的CAD插件大合集,视频教程手把手教学,工作效率翻倍...

超实用的CAD插件大合集,视频教程手把手教学,工作效率翻倍!今天被单位新来的实习生给上了一课,才知道原来CAD还有这么多好用便捷的插件。我厚着脸皮要来一份试了一下才体验到快速制图的快乐,这些全是平时制图能用得上的…

在linux操作系统Centos上安装服务器相关软件

如果您的服务器没有图形界面(GUI),您可以通过命令行(终端)来安装和配置Tomcat、JDK和MySQL等软件。以下是在没有图形界面GHome的 Linux 系统上安装这些软件的基本步骤: 对于CentOS Stream 9,您可以按照以下步骤在命令行上安装Tomcat、JDK 和 MySQL 数据库: 1. 安装JD…