如何使用getNamedItem与DOMparser解析URL

时间:2018-10-03 06:59:37

标签: php laravel web-scraping domparser

我正在尝试使用DOMparser获取URL,但停留在getNamedItem 如何解决这个问题呢?我在这里想念的是什么?我欢迎任何想法!

$url = 'https://www.31sumai.com/search/area/kansai/result/?area=16,17,18';
$html = file_get_contents($url);
libxml_use_internal_errors(true);
$DOMParser = new \DOMDocument();
$DOMParser->loadHTML($html);
$mainlink = null;
$allPTags = $DOMParser->getElementsByTagName('p');
foreach ($allPTags as $ptag) {
     $class = $ptag->attributes->getNamedItem("class");
     if ($class && $class->nodeValue == 'c-name') {
         $main = $ptag->attributes->getNamedItem("href");
         if ($main) {
             $mainlink = $main->nodeValue;
          }
     }
}

var_dump($mainlink);

它返回null,但已经检查了网站,该标记中有一个URL。

1 个答案:

答案 0 :(得分:1)

    $url = 'https://lions-mansion.jp/area/kansai/';
    $html = file_get_contents($url);
    libxml_use_internal_errors(true);
    $DOMParser = new \DOMDocument();
    $DOMParser->loadHTML($html);
    $mainlink = null;
    $allPTags = $DOMParser->getElementsByTagName('p');
    foreach ($allPTags as $ptag) {
        $class = $ptag->attributes->getNamedItem("class");
        if ($class && $class->nodeValue == 'areapageDetailList_item_btn_hp') {
            $links = $ptag->getElementsByTagName('a');
            foreach ($links as $link) {
                $hrefAttr = $link->attributes->getNamedItem("href");
                if ($hrefAttr) {
                    $mainlink = $hrefAttr->nodeValue;
                }
            }
        }
    }

    echo $mainlink;