简单HTMLDom:去掉<table>后找到<p>
Simple HTML Dom: Find <p> after removing <table>
所以我正在编写一个基本的维基百科页面爬虫程序来获取文章第一段中的第一个 link。我当前的策略涉及找到第一段,然后找到该段中的第一个 link(检查异常)。但是,某些维基百科文章的第一段标签位于 table 之内——这是我不想要的。所以我试图在找到该段落之前删除页面 first 中的所有 table。
但是在我删除 tables 之后,我的第一段的 "find" 函数仍然 returns table 中的段落我以为我已经从 html 中删除了.有什么想法吗?
$html = new simple_html_dom();
$html->load_file($new_target);
if (!empty($html->find('table'))) {
foreach($html->find('table') as $table) {
$table->innertext = '';
$table->outertext = '';
}
}
$p = $html->find('p', 0);
// this returns a paragraph that is inside a table I just deleted.
您可以使用标准 DOMDocument
对象执行此操作,如下所示:
$dom = new DOMDocument();
$dom->load($yourHtmlFile);
foreach ($dom->getElementsByTagName('table') as $table) {
$table->parentNode->removeChild($table);
}
foreach ($dom->getElementsByTagName('p') as $para) {
$paraHtml = $dom->saveHTML($para);
echo $paraHtml;
break; // do not process other p-tags.
};
所以我正在编写一个基本的维基百科页面爬虫程序来获取文章第一段中的第一个 link。我当前的策略涉及找到第一段,然后找到该段中的第一个 link(检查异常)。但是,某些维基百科文章的第一段标签位于 table 之内——这是我不想要的。所以我试图在找到该段落之前删除页面 first 中的所有 table。
但是在我删除 tables 之后,我的第一段的 "find" 函数仍然 returns table 中的段落我以为我已经从 html 中删除了.有什么想法吗?
$html = new simple_html_dom();
$html->load_file($new_target);
if (!empty($html->find('table'))) {
foreach($html->find('table') as $table) {
$table->innertext = '';
$table->outertext = '';
}
}
$p = $html->find('p', 0);
// this returns a paragraph that is inside a table I just deleted.
您可以使用标准 DOMDocument
对象执行此操作,如下所示:
$dom = new DOMDocument();
$dom->load($yourHtmlFile);
foreach ($dom->getElementsByTagName('table') as $table) {
$table->parentNode->removeChild($table);
}
foreach ($dom->getElementsByTagName('p') as $para) {
$paraHtml = $dom->saveHTML($para);
echo $paraHtml;
break; // do not process other p-tags.
};