1 回答
TA贡献1821条经验 获得超4个赞
您可以简单地先选择帖子,然后使用以下方法分别获取每个子数据:
DOMXPath::query
结合DOMDocument::save
检索消息段落。
代码:
$xpath = new DOMXPath($dom);
$postsElements = $xpath->query('//*[@class="post"]');
$posts = [];
foreach ($postsElements as $postElement) {
$author = $xpath->evaluate('normalize-space(.//*[@class="who-post"])', $postElement);
$date = $xpath->evaluate('normalize-space(.//*[@class="date-post"])', $postElement);
$message = '';
foreach ($xpath->query('.//*[contains(@class, "message")]/p', $postElement) as $messageParagraphElement) {
$message .= $dom->saveHTML($messageParagraphElement);
}
$posts[] = (object)compact('author', 'date', 'message');
}
print_r($posts);
无关说明:抓取网站的 HTML 本身并不违法,但您应避免在未经他们同意的情况下在您自己的应用程序/网站上显示他们的数据。此外,如果他们决定更改其 HTML 结构/CSS 类名,这可能会在任何时候中断。
- 1 回答
- 0 关注
- 94 浏览
添加回答
举报