从同一个多个div中提取文本

时间:2012-06-14 16:34:16

标签: php html extract scrape

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

一次做多个页面绝对是一个奖励。

我已在此网站Extract text from a DIV that occurs on multiple pages on a website, then output to .txt?

上阅读了该问题

它似乎与我要求的相似,如果不相同的话。不确定这个是否会从一个页面中的多个同名div中提取。

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

当我年轻的时候,我确实做了几年的HTML,但我的PHP技能非常基本。

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

由于

2 个答案:

答案 0 :(得分:0)

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

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

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

上面的简单dom解析器链接为您提供了如何抓取网站的一步一步。

为了让我们为您提供帮助,最好是发布您的代码,并确保错误,您提供的信息越多,您可以获得更好的答案。如果您希望SO为您编写解析网页的脚本,您可能会感到失望。

答案 1 :(得分:0)

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

Quick Start
How to create HTML DOM object?
How to find HTML elements?
How to access the HTML element's attributes?
How to traverse the DOM tree?
How to dump contents of DOM object?
How to customize the parsing behavior?
API Reference
FAQ

此处还有一个示例网站刮刮的示例(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);