php抓取网页程序(本文实例讲述了PHP小偷程序的设计与实现方法。)
优采云 发布时间: 2021-11-05 00:03php抓取网页程序(本文实例讲述了PHP小偷程序的设计与实现方法。)
本文介绍了PHP小偷程序的设计和实现。分享给大家,供大家参考,如下:
其实我一直想做一个有内涵的图网站。之前的想法是做一个cms,然后自己上传一些图片。.
一开始我没有太多动力去做这件事。然后我放弃了,后来研究了一个CURL。无论如何,最好实现这个想法。
用 PHP 偷图片就像:穿袜子和凉鞋。虽然没有问题,但是看着真的很心痛。
先说说我对PHP小偷程序的设计。PHP不支持多线程,所以我只能按顺序做。
获取目标网站的HTML页面+解析HTML页面获取图片存储的连接+以二进制方式读取并保存到本地+重命名==处理OK
您现在可以通过两种方式运行该程序:
第一种:用浏览器运行程序(多半会卡死,设置超时和内存大小就可以了,比较难等你)
另:用命令行启动PHP(没有PHP超时问题)
/**
*HTML解析类
*author:Summer
*date:2014-08-22
**/
class Analytical{
public function __construct()
{
require_once('Class/SimpleHtmlDom.class.php');
$this->_getDir();
}
private function _getDir()
{
$dir = "../TMP/HTML/Results/1";
$imgBIG = "../TMP/IMG/JPG/BIG";
$it = new DirectoryIterator($dir."/");
foreach($it as $file) {
//用isDot ()方法分别过滤掉“.”和“..”目录
if (!$it->isDot()) {
$dirs = $dir."/".$file ;
$tmp = explode(".",$file);
$html = file_get_html($dirs);
$ulArr = $html->find('img');
foreach($ulArr as $key=>$value)
{
if ($value->class == "u")
{
$url = <a>http://</a>www.jb51.net.$value->src;
$infomation = file_get_contents($url);
$result = $this->saveHtml($infomation, $imgBIG, $tmp['0'].".jpg");
if($result)
{
echo $file."OK\n";
}
}
}
}
}
}
private function saveHtml($infomation,$filedir,$filename)
{
if(!$this->mkdirs($filedir))
{
return 0;
}
$sf = $filedir."/".$filename;
$fp=fopen($sf,"w"); //写方式打开文件
return fwrite($fp,$infomation); //存入内容
fclose($fp); //关闭文件
}
//创建目录
private function mkdirs($dir)
{
if(!is_dir($dir))
{
if(!$this->mkdirs(dirname($dir))){
return false;
}
if(!mkdir($dir,0777)){
return false;
}
}
return true;
}
}
new Analytical();
以上就是从HTML页面获取IMG连接地址的过程。
使用了两个更重要的东西:
1.PHP 的 DOM 解析扩展 simplehtmldom
2.PHP 的目录迭代器
明白这两点。这门分析课没有难度。
说说如何获取需要解析的页面?
其实原理和上面一样。主要是获取页面的URL,然后通过CURL读取页面,返回一个HTML字符串,
然后将函数包的HTML页面保存到本地。
我来这里是因为我想要采集页面中的图片(为了防止别人被盗),所以设计的比较复杂。
以及为什么要分开,因为simplehtmldom对象非常大,反汇编的时候流程更清晰。
肯定有人会说,为什么不用正则匹配跳过保存HTML到本地的链接,BINGO!我只能懒得写规则了。
对PHP相关内容感兴趣的读者可以查看本站专题:《php curl使用总结》、《PHP图形和图片操作技巧总结》、《PHP数组(Array)操作技巧大全》、《PHP常见遍历》算法与技巧汇总、PHP数据结构与算法教程、PHP编程算法汇总、PHP正则表达式使用汇总、PHP操作与运算符使用汇总、PHP字符串使用汇总及《PHP常用数据库操作技巧汇总》
我希望这篇文章能帮助你进行 PHP 编程。
时间:2016-10-14