我正在尝试找到一种强大的方法来解析HTML文档中的所有文本(即非HTML /非代码/非脚本内容)。我正在谈论在互联网上的任何输入网页上提取关键字。我正在编写一个关键字蜘蛛,它使用PHP跟踪网页上的关键字趋势,虽然我发现了许多实际读取内容的好方法(比如DOMDocument和cURL),但我很难找到任何内容。实时解析所有单词内容的强大解决方案,与Internet上任何旧随机页面上的HTML / Javascript / CSS /等分开。
我首先尝试使用strip_tags(),但它有许多javascript和其他xml可能在页面上的工件。我也试过Simple HTML DOM,但它似乎有标点符号和空白处理问题。我终于尝试在nadeausoftware上的教程中构建一个库,虽然它在大多数页面上运行得非常好,但在某些页面上它根本不返回任何内容(我想是尝试使用正则表达式进行解析的诅咒)
我只是想知道是否有任何php库提供了从中获取所有非html / non-javascript / non-xml / non-code words 的特定功能一个HTML文档。我知道这可能听起来像是一个很高的订单,而且我并不是在寻求完美,但如果有一个大多数网页上80%可靠的解决方案,我会很高兴。
感谢任何人提供的任何帮助!
答案 0 :(得分:1)
您可以加载文档,删除不需要的标记,然后查询textContent
属性:
$html = '<html><head><style type="text/css">hola</style></head><body><script>tada</script><a href="#">hello <span>world</span></a></body></html>';
$dom = new DOMDocument;
$dom->loadHTML($html);
foreach ($dom->getElementsByTagName('*') as $node) {
if (in_array($node->nodeName, array('script', 'style'))) {
$node->parentNode->removeChild($node);
}
}
echo $dom->documentElement->textContent;
// hello world
答案 1 :(得分:0)
事实证明,来自nadeau software的PHP解析代码实际上比我原先给它的信誉更强大 - 在额外修补时,我发现我遇到的问题是由于我提供了解析器没有正确编码为utf-8的HTML内容。
很遗憾,似乎没有任何现有的库来处理这样一个复杂的用例,但至少我能够获得教程代码来处理大量的测试例。