我想做的是从(非版权)网站提取文本。我只需要特定 div 内的文本。假设该 div 名为“foo”。每个页面上大约有 20 个“foo div”,我想从每个页面中提取文本并输出到页面上或外部文本,这并不重要。
同时做多个页面肯定会是一个额外的好处。
我已阅读此网站上的问题从网站上多个页面上出现的 DIV 中提取文本,然后输出到 .txt?
这似乎与我要问的相似,即使不完全相同。但不确定这个是否会从一页内的多个同名 div 中提取。
我尝试将所有代码复制并粘贴到新的 .php 文件中,但没有成功。我在运行时收到错误消息:(
我年轻时确实做过几年html,但我的php技能非常基础。
另外,我不需要爬行脚本或任何东西,只需抓取信息即可。如果有多个 URL 的选项,我想手动输入它们。
谢谢
你是什么意思
foo div
?如果您的意思是 div 的 name
属性值为 foo
,您可以使用 SIMPLE HTML DOM PARSER 通过类似查询轻松检索它。
$ret = $html->find('div[name=foo]');
然后,您可以迭代这些结果,并将它们存储在您认为合适的地方。 如果您手动运行脚本,将这些结果直接写入文件可能是个好主意?
上面的简单 dom 解析器链接将逐步指导您如何抓取网站。
为了让我们帮助您,最好发布您的代码,并且准确地指出错误,您提供的信息越多,您就能收到更好的答案。 如果您希望 SO 为您编写解析网页的脚本,您可能会失望。
我认为这些链接可能对您有关 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);