如何解决以下代码问题?此代码获取网站中的所有链接,但它不适用于某个网站,如下所示。我该如何解决这个问题?
<?php
$html = file_get_contents('http://blogfa.com/members/updated.aspx');
$dom = new DOMDocument();
@$dom->loadHTML($html);
// grab all the on the page
$xpath = new DOMXPath($dom);
$hrefs = $xpath->evaluate("/html/body//a");
for ($i = 0; $i < $hrefs->length; $i++) {
$href = $hrefs->item($i);
$url = $href->getAttribute('href');
echo $url . '<br />';
}
?>
答案 0 :(得分:1)
实际上你正在获取链接..但是有一个警告..要解决这个你必须添加一行.. 我收到了这个警告
E_WARNING:类型2 - DOMDocument :: loadHTML():htmlParseStartTag:misplaced&lt; body&gt;实体中的标签,行:20 - 第6行
解决方案:
<?php
$html = file_get_contents('http://blogfa.com/members/updated.aspx');
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($html);
// grab all the on the page
$xpath = new DOMXPath($dom);
$hrefs = $xpath->evaluate("/html/body//a");
for ($i = 0; $i < $hrefs->length; $i++) {
$href = $hrefs->item($i);
$url = $href->getAttribute('href');
echo $url . '<br />';
}
?>
libxml_use_internal_errors(真);用于禁用警告..
答案 1 :(得分:0)
当我运行您的代码时,我收到以下PHP错误:
E_WARNING : type 2 -- DOMDocument::loadHTML(): htmlParseStartTag: misplaced <body> tag in Entity, line: 20 -- at line 6
如果您在http://blogfa.com/members/updated.aspx查看网页的源代码,您会看到<body>
- 代码已打开两次。
尝试删除第二个<body>
标记。除此之外,您的代码似乎有效。