PHP利用 simple_html_dom 远程图片本地化
发表于:2024-10-31 17:42:19浏览:650次
废话少说,直接上代码
在控制器中引入 simple_html_dom 库
use voku\helper\HtmlDomParser;
定义获取指定页面的文章内容和图片本地化
一般用于网页内容爬取
/**
*@description 数据列表
*@buildcode(false)
*/
function getWebContent(){
// 获取远程网页内容
$url = 'http://www.news.cn/tech/20240520/f5652ab6026e48028e89234b7cd60eaa/c.html';
// 获取当前网页路径,用于图片获取
$parsedUrl = parse_url($url);
$path = $parsedUrl['path'];
$directoryPath = dirname($path);
$fullPathWithoutFileName = $parsedUrl['scheme']. '://'. $parsedUrl['host']. $directoryPath;
$arrContextOptions=array(
"ssl"=>array(
"verify_peer"=>false,
"verify_peer_name"=>false,
),
);
$html = file_get_contents($url, false, stream_context_create($arrContextOptions));
$filename = 'ok.html';
file_put_contents($filename, $html);
$dom = HtmlDomParser::str_get_html($html);
$elements = $dom->find('div#detail');
// 查找图片
$images = $elements->find('img');
$localImg = [];
foreach ($images as $image) {
$remoteImageUrl = $image->src;
if (strpos($remoteImageUrl, 'http://') === 0 || strpos($remoteImageUrl, 'https://') === 0) {
$imgFile = $remoteImageUrl;
} else {
$imgFile = $fullPathWithoutFileName.'/'.$remoteImageUrl;
}
$localImg[] = $imgFile;
$localFileName = './backup/'. basename($remoteImageUrl);
// 获取远程图片内容
$imgContent = file_get_contents($imgFile);
file_put_contents($localFileName, $imgContent);
}
$data['content'] = $elements ->innerhtml[0];
$data['img'] = $localImg;
return $data;
$html->clear();
}
推荐文章
- PhpStorm 链接管理Mysql数据库(远程数据库和本地数据库)
- 宝塔Linux面板安装Redis
- uniapp+thinkphp6开发答题系统 API接口开发签名验证、接口安全验证方法
- element ui中表单el-form的label如何设置宽度
- ThinkPHP+uniAPP 公众号线上答题软件答题抽奖赢红包知识竞赛宣传活动链接系统
- OpenSSH Server 远程代码执行漏洞(CVE-2024-6387)openssh8.8升级到9.8
- ThinkPHP6.0.3+ElementAdmin+UniAPP多端新闻网站、App 源码
- ThinkPHP3.2 新闻资讯网站源码,PC端+手机端,开源可二次开发
- 党史知识网络答题系统、答题系统、答题小程序uniapp前端,ThinkPHP8后端
- ThinkPHP 后端采集新华社客户端文章,PHP采集vue.js站点文章记录