php简单DOM解析器
好吧,我已经为此奋斗了一段时间,也许有人能帮我 我正在尝试从以下HTML获取电子邮件链接:php简单DOM解析器,php,html,dom,simpledom,Php,Html,Dom,Simpledom,好吧,我已经为此奋斗了一段时间,也许有人能帮我 我正在尝试从以下HTML获取电子邮件链接: <div id="field_11" class="fieldRow span12 lastFieldRow"> <span class="caption">E-mail</span> <span class="output"> <script type="text/javascript"> <!-- doc
<div id="field_11" class="fieldRow span12 lastFieldRow">
<span class="caption">E-mail</span>
<span class="output">
<script type="text/javascript">
<!--
document.write('<a hr'+'ef="mai'+'lto'+':'+
'%40;%67;%6d;%61;%69;%6c;<\/a>');
//-->
</script>
<a href="mailto:%40%67%6d%61%69%6c">@mail</a>
</span>
</div>
电子邮件
仅使用DOM+Xpath也是可能的
$dom = new DOMDocument();
$dom->loadHtml($html);
//$dom->loadHtmlFile($htmlFile);
$xpath = new DOMXpath($dom);
var_dump(
$xpath->evaluate(
'string(//span[@class="output"]//a[starts-with(@href, "mailto:")])'
)
);
输出:
Xpath选择具有class
属性“output”的所有span
元素
//span[@class=“output”]
然后查找a
元素,其中href
属性以“mailto:
//span[@class=“output”]//a[以(@href,“mailto:”)开头]
其结果是a
元素节点列表(示例内容为单个节点)。string()
函数将第一个节点强制转换为字符串。如果节点列表为空,它将返回一个空字符串
string(//span[@class=“output”]//a[以(@href,“mailto:”)开头)
您的代码应该可以工作,它的输出是什么(或错误消息)?它会打印出一系列错误:注意:在第224行的/Applications/MAMP/htdocs/webcrawler/index.php中尝试获取非对象的属性听起来像是您的加载文件()
加载不正确。你能试着删除第二行和第三行吗(都以$html
开头,并替换为$html=file\u get\u html($target\u url);
?@laughProvider-尝试过你的方法,仍然会出现这些错误。好吧,出现这个问题的主要原因是$html->find('span[class=output'))
正在返回null
。您需要检查选择器是否正确。是否可以改用span.output
?
$dom = new DOMDocument();
$dom->loadHtml($html);
//$dom->loadHtmlFile($htmlFile);
$xpath = new DOMXpath($dom);
var_dump(
$xpath->evaluate(
'string(//span[@class="output"]//a[starts-with(@href, "mailto:")])'
)
);
string(5) "@mail"