使用Simple HTML DOM Parser抓取WordPress隐藏内容遇问题求助
解决Simple HTML DOM Parser抓取Read More插件隐藏内容的问题
嘿,我懂你遇到的麻烦——Read More插件把部分文章内容藏在了带display:none样式的.brm类div里,导致常规抓取拿不到这部分内容对吧?别担心,Simple HTML DOM Parser完全能搞定这个,因为它是直接解析HTML结构,根本不管CSS样式是否隐藏内容。
下面是具体的解决步骤和代码示例:
1. 定位并提取隐藏内容
首先,你需要用Simple HTML DOM的选择器精准选中.brm元素,然后直接提取它的内部内容——不管它的display:none样式,这对HTML解析器来说完全不是障碍。
2. 完整实现代码
给你一个能把可见内容和隐藏内容合并的完整示例:
// 引入Simple HTML DOM Parser库 include('simple_html_dom.php'); // 获取目标WordPress文章的HTML内容 $html = file_get_html('你的目标文章URL'); // 定位到文章的主内容容器 $mainContentContainer = $html->find('.mycontent', 0); if ($mainContentContainer) { // 先提取可见的正文内容 $visibleContent = $mainContentContainer->plaintext; // 在主容器内查找隐藏的.brm div $hiddenContentDiv = $mainContentContainer->find('.brm', 0); if ($hiddenContentDiv) { // 合并可见内容与隐藏内容 $fullArticleContent = $visibleContent . ' ' . $hiddenContentDiv->plaintext; echo $fullArticleContent; } else { // 没有隐藏内容的情况,直接输出可见内容 echo $visibleContent; } } else { echo '无法定位到文章内容容器'; } // 清理资源,避免内存泄漏 $html->clear(); unset($html);
额外注意事项
- 确保你正确引入了
simple_html_dom.php文件,路径要和你的脚本位置匹配。 - 如果插件是通过AJAX动态加载隐藏内容(而不是直接把内容写在HTML里仅用CSS隐藏),那上面的方法就不管用了——这种情况下你需要模拟AJAX请求去获取内容,但根据你的描述,内容是直接在HTML结构里的,所以上面的代码应该完全适用。
- 要是插件后续修改了
.brm类名,记得同步更新选择器。
内容的提问来源于stack exchange,提问作者Irene Lorkos
相关产品推荐
相关产品推荐

