PHP XPATH打印整个HTML表



在我的代码中,我试图在HTML代码中获取整个,而忽略了我旧网站上的所有JavaScript(AdSense代码)。我有大约800页,我很难一个一个一个复制。我面临的主要问题是我的XPATH太长了,它每次都会给我一个错误,其次,它仅打印文本而不是HTML代码。我不知道如何解决。

我的XPath

/html/body/div/div/div/div[4]/table/tbody/tr/td/div/h2/table/tbody/tr/td/div[1]/table/tbody/tr/td[1]/div/table/tbody/tr/td/div/table/tbody/tr/td/div/table/tbody/tr/td/div

我得到的错误可在https://pastebin.com/ffrlr3vq

上找到

我当前的PHP代码

error_reporting(E_ERROR);
$urls[] = "http://myoldwebsite.com/somepage.html";
function curlload($url) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
        $source = curl_exec($ch);
        return $source;
}
foreach ($urls as $url) {
$source = curlLoad($url);
@$doc = new DOMDocument();
@$doc->loadHTML($source);   
$xpath = new DomXPath($doc);
$nodeList = $xpath->query("//div[@class='pageContent']");
// To check the result:
echo "<p>" . $node->nodeValue . "</p>";
}

输出可以使用

的加载的HTML

http://php.net/manual/de/domdocument.savehtml.php

要删除script标签(如聊天中所述),您可以使用类似的东西:

<?php
$html = <<<HTML
...
HTML;
$dom = new DOMDocument();
$dom->loadHTML($html);
$script = $dom->getElementsByTagName('script');
$remove = [];
foreach($script as $item)
{
  $remove[] = $item;
}
foreach ($remove as $item)
{
  $item->parentNode->removeChild($item); 
}
$html = $dom->saveHTML();

source&amp;更多信息:从HTML内容删除脚本标签

最新更新