使用PHP web scrape仅显示特定ID?

使用PHP web scrape仅显示特定ID?,php,web-scraping,Php,Web Scraping,我正在做一个个人项目,它获取我当地气象站的学校/企业关闭的内容,并在我的个人网站上显示结果。由于该站点不使用RSS提要(遗憾的是),我曾考虑使用PHP刮取来获取页面内容,但我只想显示某个ID元素。这可能吗 我的PHP代码是 <?php $url = 'http://website.com'; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_c

我正在做一个个人项目,它获取我当地气象站的学校/企业关闭的内容,并在我的个人网站上显示结果。由于该站点不使用RSS提要(遗憾的是),我曾考虑使用PHP刮取来获取页面内容,但我只想显示某个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\u closings\u dg

我成功地使用了一个库PHPQuery:

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

phpQuery::newDocument($output);

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

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

我在这方面非常成功地使用了一个库PHPQuery:

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

phpQuery::newDocument($output);

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

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

下面是一个使用DOMDocument的示例。它使用id=“test”…从第一个
元素中提取文本

$html='1!'
测试元素文本
测试二
';
$dom=新的DOMDocument;
$dom->loadHTML($html);
$xpath=newdomxpath($dom);
$res=$xpath->query('//h1[@id=“test”]');
如果($res->item(0)!==NULL){
$test=$res->item(0)->nodeValue;
}

下面是一个使用DOMDocument的示例。它使用id=“test”…从第一个
元素中提取文本

$html='1!'
测试元素文本
测试二
';
$dom=新的DOMDocument;
$dom->loadHTML($html);
$xpath=newdomxpath($dom);
$res=$xpath->query('//h1[@id=“test”]');
如果($res->item(0)!==NULL){
$test=$res->item(0)->nodeValue;
}

DOM解析通常被认为是通过正则表达式解析HTML/XML内容的首选方法。您需要使用带有xpath查询的PHP的DOMDocument来提取您要查找的特定信息。@MarcB OMG这是一个非常复杂的问题。Canonical是一个正确的词…@rdlowrey:这已经到了一个地步,任何涉及html+regex的问题都应该自动关闭并指向该答案。@MarcB这是我在SO上看到的最好的答案:DDOM解析通常被认为是通过正则表达式解析html/XML内容的首选方法。您需要使用带有xpath查询的PHP的DOMDocument来提取您要查找的特定信息。@MarcB OMG这是一个非常复杂的问题。Canonical是正确的词…@rdlowrey:这已经到了一个地步,任何涉及html+regex的问题都应该自动关闭并指向那个答案。@MarcB这是我在SO:D上看到的最好的答案