所以我正在编写一个基本的维基百科页面爬虫来获取本文第一段中的第一个链接。我目前的策略是找到第一段,然后找到该段中的第一个链接(检查例外)。但是,一些维基百科的文章在表格中有他们的第一个段落标签 - 我不想要。所以我在找到段落之前尝试删除页面中的所有表。
但是在我删除表之后,第一段的“find”函数仍然返回表中我认为已从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.
答案 0 :(得分:0)
您可以使用标准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.
};