如何在xpath

时间:2016-09-05 13:38:43

标签: php xpath web-scraping

如果你检查页面以获取img src,你会看到这样的:/images/March/img1.jpeg。但是你知道这不是一个真实的地址。我想刮掉这个页面并获得正确的src值。我怎样才能做到这一点? thx提前。

<?php
$content=file_get_content('example.com');
$dom= new DOMDocument();
$dom->loadHTML($content);
$xpath=new DOMXpath();
$img=$xpath->query("(//img)[2]/@src");
foreach($img as $val){
   $images=$val->nodeValue;//just returns img/march/img1.jpeg
                           //instead of www.example.com/img.....
}
?>

1 个答案:

答案 0 :(得分:0)

你必须像这样手动制作绝对路径:

<?php

$content = file_get_contents('example.com');

$dom     = new DOMDocument();
$dom->loadHTML($content);

$xpath = new DOMXpath();
$img   = $xpath->query("(//img)[2]/@src");

// Make Absolute Url
function getAbsUrl($value, $baseurl)
{
    $Parsed = parse_url($value);

    if (empty($Parsed['host'])) {
        // Relative
        return rtrim($baseurl, '/') . '/' . ltrim($Parsed['path'], '/');
    } else {
        return $value;
    }
}

foreach ($img as $val) {
    $images = getAbsUrl($val->nodeValue, 'http://www.example.com/');
}