Php Parse不再工作了

时间:2011-02-11 09:47:44

标签: php curl html-parsing

我试图从这个页面解析文本我的方法是curl和dom但它只是返回一个空白页面。如果有人能告诉我如何做到这一点,将不胜感激。我被困住了,我不知道从这里开始。

1 个答案:

答案 0 :(得分:2)

DOM代码按预期工作。 <span>没有文字节点:

<span 
    id="ctl00_ctl00_contentPlaceHolder_…_msgTextBody" 
    class="msgBody" 
    style="color:#525B64;"></span>

XPath返回的DOMNodeList将为空。如果您删除了/text()测试,它将包含DOMElement的{​​{1}},这将为<span>返回一个空字符串。

在页面提供给您的浏览器后,您尝试解析的文字将插入JavaScript客户端。使用nodeValue获取页面时不会发生这种情况,因为DOM不是JavaScript解释器。

您要查找的邮件位于DOM块中。您可以解析该块并尝试使用正则表达式提取它们,例如

<script>

上面会将JavaScript解析并解码为PHP对象数组,然后您可以使用$xp = new DOMXpath($dom); $nodes = $xp->query('//script[contains(., "var messages")]'); preg_match_all( '~var messages = (.*\]);~', $nodes->item(0)->nodeValue, $messages); $messages = json_decode($messages[1][0]); var_dump($messages); 进行访问。

请参阅http://codepad.viper-7.com/R985hm