首页 > 解决方案 > 如何使用 DOMparser 使用 getNamedItem 解析 url

问题描述

我正在尝试获取 URL,DOMparser但停留在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。

标签: phplaravelweb-scrapingdomparser

解决方案


    $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;

推荐阅读