php 获取url 图片,php7.3-正则提取网页中所有图片的url地址

本文介绍了如何利用PHP通过curl获取网页HTML,再使用正则表达式提取图片URL,实现批量下载图片。主要步骤包括设置curl请求,判断HTTP状态码,正则匹配图片链接,以及内存管理。适合于网站模板仿制或图片采集。
摘要由CSDN通过智能技术生成

76cc32e28a5dc3a08fbfdad67778a900.png

在很多时候,如仿站或是想扒别人的网站模板的时候,我们需要获取别人网站上面的图片,别人网站上面的图片N多,要一个个的查看代码下载,那非常的麻烦,今天我就教大家利用php去批量获取网页所有图片URL地址的一个方法,说白了就是利用PHP去采集别人网站上面的图片。

7f1802874def02b4997a218716e74636.png

采集图片的基本流程,首先要获取到网页代码,然后用正则去获取图片的url地址,最后用获取到的地址去一张张下载图片就可以了。

首先我们先获取指定网页的html代码

//curl

function http_request_json($url,$post_data = NULL)

{

set_time_limit(2);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

if (isset($post_data)){

curl_setopt($ch, CURLOPT_POST, true);

curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

}

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

curl_setopt($ch, CURLOPT_MAXREDIRS,20);

$result[1] = curl_exec($ch);

$result[0]= curl_getinfo($ch,CURLINFO_HTTP_CODE);

curl_close($ch);

ksort($result);

return $result;

}

$url='https://blog.csdn.net/wwyxhqc_zy/article/details/70213635';

$return=http_request_json($url);

到这里我们已成功获取到了批定网页的html代码,我上面的获取函数返回的是一个数组,$return[0]是获取的网页状态码,我们首先来判断状态码是否正常,也就是返回的是否是200,如果不是200则代码停止运行。

if ($return[0]!=200)

{

exit;

}

然后把$return[1]赋值给$str,这样我们方便对变量$str进行操作,在操作前把$return数组占用的内存给回收一下,若在这里不回收,可能有时在批量采集图片时会造成php大量的占用内存的情况发生,我们对$str进行正则来提取所有的图片url地址。

$str=$return[1];

$return=null;

$p = '//i'; //修改,2019年3月16日 19:45:30,赵

preg_match_all($p, $str, $matches);

上面的$matches数组便是我们正则获取到的相关图片信息,这是一个二维数组,我们打印可以看出$matches[1]是我们本次提取到的所有图片地址的url。

Array

(

[0] => Array

(

[0] => 大哭,然而这是没有什么用的,于是,我从头开始检查了一遍会出现问题的地方,不出一会,找到了,原来是服务没有开启的原因,现在整理一下共勉微笑

[1] => anonymous-User-img.png

[2] => 8d9efd81b3899310987010b538b2b3de.png

[3] => caf2c51182cca2971fba6b9b9390b87e.png

[4] => cf386ad44c8c59afc8da0a21af238692.png

程序员2019年学Python
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值