使用 DOMXpath 从 PHP 中的页面中捕获所有团队名称
Using DOMXpath to catch all team names from a page in PHP
我想从此页面中提取所有团队名称和 link:
https://www.transfermarkt.fr/ligue-1/startseite/wettbewerb/FR1
我正在使用 DOMXpath 来匹配元素,但使用以下代码它不会 return 我任何东西。
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;
}
你知道为什么吗?
感谢任何帮助。
有时 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 作为值。
我想从此页面中提取所有团队名称和 link:
https://www.transfermarkt.fr/ligue-1/startseite/wettbewerb/FR1
我正在使用 DOMXpath 来匹配元素,但使用以下代码它不会 return 我任何东西。
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;
}
你知道为什么吗?
感谢任何帮助。
有时 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 作为值。