从多个同名div中提取文本

问题描述 投票:0回答:2

我想做的是从(非版权)网站提取文本。我只需要特定 div 内的文本。假设该 div 名为“foo”。每个页面上大约有 20 个“foo div”,我想从每个页面中提取文本并输出到页面上或外部文本,这并不重要。

同时做多个页面肯定会是一个额外的好处。

我已阅读此网站上的问题从网站上多个页面上出现的 DIV 中提取文本,然后输出到 .txt?

这似乎与我要问的相似,即使不完全相同。但不确定这个是否会从一页内的多个同名 div 中提取。

我尝试将所有代码复制并粘贴到新的 .php 文件中,但没有成功。我在运行时收到错误消息:(

我年轻时确实做过几年html,但我的php技能非常基础。

另外,我不需要爬行脚本或任何东西,只需抓取信息即可。如果有多个 URL 的选项,我想手动输入它们。

谢谢

php html web-scraping extract
2个回答
0
投票

你是什么意思

foo div
?如果您的意思是 div 的
name
属性值为
foo
,您可以使用 SIMPLE HTML DOM PARSER 通过类似查询轻松检索它。

$ret = $html->find('div[name=foo]');

然后,您可以迭代这些结果,并将它们存储在您认为合适的地方。 如果您手动运行脚本,将这些结果直接写入文件可能是个好主意?

上面的简单 dom 解析器链接将逐步指导您如何抓取网站。

为了让我们帮助您,最好发布您的代码,并且准确地指出错误,您提供的信息越多,您就能收到更好的答案。 如果您希望 SO 为您编写解析网页的脚本,您可能会失望。


0
投票

我认为这些链接可能对您有关 PHP 中的 HTML DOM 解析有一些帮助

快速入门
如何创建 HTML DOM 对象?
如何查找HTML元素?
如何访问HTML元素的属性?
如何遍历DOM树?
如何转储DOM对象的内容?
如何自定义解析行为?
API参考
常见问题解答

这里还有一个从示例网站抓取的示例 ( www.slashdot.org )

// Create DOM from URL
$html = file_get_html('http://slashdot.org/');

// Find all article blocks
foreach($html->find('div.article') as $article) {
    $item['title']     = $article->find('div.title', 0)->plaintext;
    $item['intro']    = $article->find('div.intro', 0)->plaintext;
    $item['details'] = $article->find('div.details', 0)->plaintext;
    $articles[] = $item;
}

print_r($articles);
© www.soinside.com 2019 - 2024. All rights reserved.