首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PHP中获取div中的所有链接

如何在PHP中获取div中的所有链接
EN

Stack Overflow用户
提问于 2019-03-01 16:33:56
回答 4查看 1.7K关注 0票数 3

我想从另一个网站打开一个页面,并提取此页面中的div of class="layout-2-2"中的所有链接(href)。如何使用PHP完成此操作?

我想复制this网页布局-2-2中的每个链接。

以下是我的实际代码

代码语言:javascript
复制
    $doc = file_get_contents('https://url/');
    $xpath = new DOMXpath($doc);
    $liens1= $xpath->query('//div[@class="layout-2-2"]');
    $links = [];
    foreach($liens1 as $lien1) {
      $arr = $lien1->getElementsByTagName("a");
      foreach($arr as $item) {
        $href =  $item->getAttribute("href");
        $text = trim(preg_replace("/[\r\n]+/", " ", $item->nodeValue));
        $links[] = $href;
      }
    }
    echo($links);
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-03-01 16:43:44

使用xpath query://div[@class=\"layout-2-2\"]//a/@href获取父节点、子节点和子节点属性。

代码语言:javascript
复制
$html = file_get_contents('https://url/');
$links = [];
$document = new DOMDocument;
$document ->loadHTML($html);
$xPath = new DOMXPath($document );
$anchorTags = $xPath->evaluate("//div[@class=\"layout-2-2\"]//a/@href");
foreach ($anchorTags  as $anchorTag) {
    $links[] = $anchorTag->nodeValue;
}
print_r($links);
票数 4
EN

Stack Overflow用户

发布于 2019-03-01 16:45:39

您可以使用简单的foreach来获取特定div标记内的所有链接

代码语言:javascript
复制
    //find all a tags that have a href in the div abcde

    $hrefDetails = $html->find('div[@class="layout-1-1"]', 0);
    $linkArray = array();

    foreach($hrefDetails->find('a[href]') as $link){
        array_push($linkArray, $link);
    }

   //print result here

    echo "<pre>";
    print_r($linkArray);
    echo "</pre>";
票数 1
EN

Stack Overflow用户

发布于 2019-03-01 16:39:41

代码看起来很好,但我猜您遇到的是它不能工作的问题。

如果是这样的话,这可能与以下事实有关:现在的内容不是存储在登录页面中(您正在抓取的),而是随后由页面通过JavaScript AJAX调用请求的。因此不会被简单的file_get_contents()捕获。

这有点像你从毒贩那里买毒品,他可能在买毒品的时候没有带着毒品,而是在你给他钱给他带货后打电话给另一个人。因此,抢劫毒贩,可能不会产生你想要的结果。

正如您正在尝试做的那样,Web抓取是一门艺术,您最好使用现成的包,而不是试图自己重新发明轮子。即使这样,许多网站也会保护自己免受链接盗窃的攻击。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54940750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档