为了账号安全,请及时绑定邮箱和手机立即绑定

使用 DOMXpath 从 PHP 页面中捕获所有团队名称

使用 DOMXpath 从 PHP 页面中捕获所有团队名称

PHP
慕桂英546537 2021-08-28 10:03:57
我想从此页面中提取所有团队名称和链接:https://www.transfermarkt.fr/ligue-1/startseite/wettbewerb/FR1我正在使用DOMXpath来匹配元素,但使用以下代码它不会返回任何内容。function get_data($url) {    $ch = curl_init();    $timeout = 5;    curl_setopt($ch, CURLOPT_URL, $url);    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)");    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,false);    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);    curl_setopt($ch, CURLOPT_MAXREDIRS, 10);    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);    $data = curl_exec($ch);    curl_close($ch);    return $data;}$url = 'https://www.transfermarkt.fr/ligue-1/startseite/wettbewerb/FR1';$html = get_data($url);$dom = new DOMDocument();$dom->loadHTML($html);$xpath = new DOMXpath($dom);foreach($xpath->query('//*[contains(concat( " ", @class, " " ), concat( " ", "hide-for-pad", " " ))]//*[contains(concat( " ", @class, " " ), concat( " ", "tooltipstered", " " ))]') as $v) {    echo $v->getAttribute("href") . PHP_EOL;}请问你知道为什么吗?
查看完整描述

1 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

有时,一旦页面被加载,HTML 就会被 Javascript 改变。我看过页面,我认为您应该能够从以下内容中获取详细信息(请检查显示的 URL 是否正确)...


$teams = $xpath->query('//td[@class="zentriert no-border-rechts"]/a[contains(concat( " ", @class, " " ), concat( " ", "vereinprofil_tooltip", " " ))]');

foreach($teams as $v) {

    echo $v->getAttribute("href") . " - ";

    echo $v->firstChild->getAttribute("alt").PHP_EOL;

}

这可能会产生重复,因此可能会像这样创建团队和 URL 的列表......


$teams = [];

foreach($teams as $v) {

    $teams[$v->firstChild->getAttribute("alt")] = $v->getAttribute("href");

}

这将为您提供团队名称列表(作为键)和 URL 作为值。


查看完整回答
反对 回复 2021-08-28
  • 1 回答
  • 0 关注
  • 99 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号