只用PHP网页显示某些ID?

时间:2012-01-02 19:53:32

标签: php web-scraping

我正在开展一个个人项目,它可以获取当地气象站学校/业务关闭的内容,并在我的个人网站上显示结果。由于该站点不使用RSS提要(遗憾的是),我正在考虑使用PHP scrape来获取页面的内容,但我只想显示某个ID元素。这可能吗?

我的PHP代码是,

<?php
$url = 'http://website.com';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
?>

我正在考虑使用preg_match,但我不确定语法或者这是否是正确的命令。我想要显示的ID元素是#LeftColumnContent_closings_dg

2 个答案:

答案 0 :(得分:2)

这是使用DOMDocument的示例。它使用id =“test”...

从第一个<h1>元素中提取文本
$html = '
<html>
<body>
<h1 id="test">test element text</h1>
<h1>test two</h1>
</body>
</html>
';

$dom = new DOMDocument;
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$res = $xpath->query('//h1[@id="test"]');
if ($res->item(0) !== NULL) {
  $test = $res->item(0)->nodeValue;
}

答案 1 :(得分:1)

我在这类事情上非常成功地使用的库是PHPQuery:http://code.google.com/p/phpquery/

你基本上把你的网站变成了一个字符串(就像你上面的那样),然后做:

phpQuery::newDocument($output);

$titleElement = pq('title');
$title = $titleElement->html();

例如 - 这将获得title元素的内容。好处是所有方法都以jQuery命名,如果你已经了解jQuery,那么它很容易学习。