[英]I need to grab data from html of a remote url
我需要一个接受此ul的脚本:
<ul id="activitylist">
<li class="activitybit forum_thread">
<div class="avatar"> <img alt="secret team's Avatar" src="images/misc/unknown.gif" title="secret team's Avatar"> </div>
<div class="content hasavatar">
<div class="datetime"> <span class="date">Today, <span class="time">11:25pm</span></span> </div>
<div class="title"> <a class="username" href="member.php/436070-secret-team">secret team</a> started a thread <a href="showthread.php/415403-Allow-VIDEO-Code-missing-in-settings">'Allow [VIDEO] Code' missing in settings</a> </div>
<div class="views">0 replies | 0 view(s)</div>
</li>
</ul>
一ul中有10到15个孩子li。 我需要线程具有0条回复的每个子li的线程名称。 我在上面发布了一个示例li。 因此,对于该示例,我需要以下文本:
'Allow [VIDEO] Code' missing in settings
该div有0条回复为文本:
<div class="views">0 replies | 0 view(s)</div>
我有此示例代码,但无法正常工作。
<?php
$request_url = 'https://www.vbulletin.com/forum/activity.php';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $request_url); // The url to get links from
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // We want to get the respone
$result = curl_exec($ch);
$sPattern = "/<li class=\"activitybit forum_thread\">(.*?)<\/li>/s";
preg_match_all($sPattern, $result, $parts);
$links = $parts[1];
foreach ($links as $link) {
if (stripos($link, "0 replies") !== false) {
echo $link . "<br>";
}
}
curl_close($ch);
?>
这是一个可解析任何类型的HTML的正则表达式:
$regex = new DOMDocument;
$regex->loadHTML($html);
现在严重。 DOMDocument已解析所有HTML。 现在,您可以使用这些功能和这些功能来遍历标签并提取其属性和内容。 但是使用名为DOMXPath的伴随类要容易得多 :
$xpath = new DOMXpath($regex);
foreach ($xpath->query("//ul[@id='activitylist']/li") as $li) {
$view = $xpath->query(".//div[@class='views']", $li)->item(0);
$link = $xpath->query(".//div[@class='title']/a", $li)->item(1);
if (preg_match("/0 replies/", $view->nodeValue)) {
echo $link->nodeValue . " (" . $link->getAttribute("href") . ")\n";
}
}
这将输出一些有关您的HTML不够完美的警告,另外还有:
'Allow [VIDEO] Code' missing in settings (showthread.php/415403-Allow-VIDEO-Code-missing-in-settings)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.