PHP中的Web抓取照片

eoxn13cs  于 2023-05-05  发布在  PHP
关注(0)|答案(2)|浏览(86)

我如何复制的网址为照片从网站上,如果网址写的样式。

<div class="thumb">
               <a href="http://goruzont.blogspot.com/2017/04/blog-post_6440.html" style="background:url(https://1.bp.blogspot.com/-6vpIH5iqPYs/WPzlNdxsRpI/AAAAAAAAntU/d7U_Ch_6FiIPwosNL4tWwqBeXw8qwo2nACLcB/s1600/1424051.jpg) no-repeat center center;background-size:cover">

<span class="thumb-overlay"></span></a>
 </div>
cbjzeqam

cbjzeqam1#

可以使用DOMDocumentDOMXPath

$html = <<< EOF
<div class="thumb">
               <a href="http://goruzont.blogspot.com/2017/04/blog-post_6440.html" style="background:url(https://1.bp.blogspot.com/-6vpIH5iqPYs/WPzlNdxsRpI/AAAAAAAAntU/d7U_Ch_6FiIPwosNL4tWwqBeXw8qwo2nACLcB/s1600/1424051.jpg) no-repeat center center;background-size:cover">

<span class="thumb-overlay"></span></a>
 </div>
EOF;

libxml_use_internal_errors(true);
$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);

foreach ($xpath->query('//div[contains(@class,"thumb")]/a') as $item) {

    $img_src =  $item->getAttribute('style');
    $img_src = preg_replace('/.*?\((.*?)\).*?/', '$1', $img_src);
    print $img_src;
}

# https://1.bp.blogspot.com/-6vpIH5iqPYs/WPzlNdxsRpI/AAAAAAAAntU/d7U_Ch_6FiIPwosNL4tWwqBeXw8qwo2nACLcB/s1600/1424051.jpg
ttp71kqs

ttp71kqs2#

可以使用regex只提取背景图像或背景:url格式

$str=' 
<div class="thumb">
               <a href="http://goruzont.blogspot.com/2017/04/blog-post_6440.html" style="background:url(https://1.bp.blogspot.com/-6vpIH5iqPYs/WPzlNdxsRpI/AAAAAAAAntU/d7U_Ch_6FiIPwosNL4tWwqBeXw8qwo2nACLcB/s1600/1424051.jpg) no-repeat center center;background-size:cover">

<span class="thumb-overlay"></span></a>
 </div>'; 

preg_match_all('~\bbackground(-image)?\s*:(.*?)\(\s*(\'|")?(?<image>.*?)\3?\s*\)~i',$str,$matches);
$images = $matches['image'];
foreach($images as $img){
     echo $img;
}
# https://1.bp.blogspot.com/-6vpIH5iqPYs/WPzlNdxsRpI/AAAAAAAAntU/d7U_Ch_6FiIPwosNL4tWwqBeXw8qwo2nACLcB/s1600/1424051.jpg

相关问题