[英]Simple HTML Dom getting tags values
我有这样的html代码:
<td class="table-main__odds" data-oid="4ci66xv464x0xbdci3" data-odd="2.18"></td>
<td class="table-main__odds colored" data-oid="4ci66xv498x0x0">
<span>
<span>
<span data-odd="3.68"></span>
</span>
</span>
</td>
<td class="table-main__odds" data-oid="4ci66xv464x0xbdci4" data-odd="3.09"></td>
<td class="table-main__odds" data-oid="4ci60xv464x0xbdchn" data-odd="10.35"></td>
<td class="table-main__odds" data-oid="4ci60xv498x0x0" data-odd="6.12"></td>
<td class="table-main__odds colored" data-oid="4ci60xv464x0xbdcho">
<span>
<span>
<span data-odd="1.26"></span>
</span>
</span>
</td>
我需要获取奇数数据,但是您可以看到有些值进入了 td 标记,有些值进入了 span 标记,但都是奇数数据
我正在尝试这种方法:
<?php
include_once('../simple_html_dom.php');
$url = "xyz";
function curl_request($url, $timeout = 30) {
// Initialize curl with given url
$ch = curl_init($url);
// Set user-agent
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);
// Write the response to a variable
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Follow redirects
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
// Max seconds to execute
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
// Stop on error
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
return curl_exec($ch);
}
function get_html($url) {
return str_get_html(curl_request($url));
}
$html = get_html($url);
$b = 0;
$search = $html->find('td[class=table-main__odds], td[class=table-main__odds colored] span');
foreach($search as $allOdds){
$quote = array($allOdds->href, $allOdds->innertext);
if (isset($allOdds->attr['data-odd'])) {
$quote['data-odd'] = $allOdds->attr['data-odd'];
}
$quotes[] = $quote;
}
foreach($quotes as $mark) {
echo $mark[0]. " ";
}
?>
但我收到了以下错误:致命错误:在第 33 行(foreach 行)上调用非对象中的成员函数 find()
有什么建议吗?
谢谢
编辑:我把 $html = get_html($url);
EDIT2:我添加了 var_dump($quotes); 在 foreach 循环之后
EDIT3:我的输出是这样的:看新图片
如果您只想获取 html 中data-odd
属性的属性值,请尝试以下简单操作:
$doc = new DOMDocument();
$doc->loadHTML($html);
$xp = new DOMXPath($doc);
$odds = $xp->query('//*[@data-odd]/@data-odd');
foreach ($odds as $odd) {
echo($odd->value) . "\r\n";
}
输出:
2.18
3.68
3.09
10.35
6.12
1.26
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.