ホームページ  >  記事  >  バックエンド開発  >  PHP に実装された便利な HTML パーサー クラスを使用してデータを収集できます_PHP チュートリアル

PHP に実装された便利な HTML パーサー クラスを使用してデータを収集できます_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 16:12:551198ブラウズ

コードをコピーします コードは次のとおりです:

$oldSetting = libxml_use_internal_errors( true );   
libxml_clear_errors();  
/**
*
* -+-----------------------------------
* |PHP5 フレームワーク - 2011
* |ウェブサイト: www.iblue.cc
* |電子メール: mejinke@gmail.com
* |日付: 2012-10-12
* -+-------------- --------------------
*
* @desc HTML パーサー
* @author jingke
*/
クラス XF_HtmlDom
{
プライベート $_xpath = null;  
プライベート $_nodePath = '';  

public function __construct($xpath = null, $nodePath = '')
{
$this->_xpath = $xpath;  
$this->_nodePath = $nodePath;  
}

public functionloadHtml($url)
{
ini_set('user_agent', 'Mozilla/5.0 (Linux; U; Android 2.1; en-us; Nexus One Build/ERD62) AppleWebKit/530.17 (KHTML, like)ヤモリ) バージョン/4.0 モバイル Safari/530.17 –Nexus');  
$content = '';  
if(strpos(strto lower($url), 'http')===false)
{
$content = file_get_contents($url);  
}
else
{
$ch =curl_init();   
$user_agent = "Baiduspider+(+http://www.baidu.com/search/spider.htm)";  
$user_agent1='Mozilla/5.0 (Windows NT 5.1; rv:6.0) Gecko/20100101 Firefox/6.0';  
curl_setopt($ch, CURLOPT_URL, $url);   
curl_setopt($ch, CURLOPT_HEADER, false);   
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   
curl_setopt($ch, CURLOPT_REFERER, $url);  
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent1);  
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);  
$content =curl_exec($ch);   
curl_close($ch);  
}

$html = new DOMDocument();   
$html->loadHtml($content);   
$this->_xpath = 新しい DOMXPath( $html );   
//$this を返します。 

}  

public function find($query, $index = null)
{
if($this->_nodePath == '')
$this->_nodePath = '//'; 
else
$this->_nodePath .= '/';  

$nodes = $this->_xpath->query($this->_nodePath.$query);  
//echo $nodes->item(0)->getNodePath();exit; 


if ($index == null && !is_numeric($index))
{
$tmp = array();  
foreach ($nodes as $node)
{
$tmp[] = new XF_HtmlDom($this->_xpath, $node->getNodePath());  
}
return $tmp;  
}
return new XF_HtmlDom($this->_xpath,$this->_xpath->query($this->_nodePath.$query)->item($index)->getNodePath()) ;  
}

/**
* コンテンツを取得する
*/
public function text()
{
if ($this->_nodePath != '' && $this->_xpath != null )
$this-> を返す;_xpath->query($this->_nodePath)->item(0)->textContent;  
else
falseを返します。  
}

/**
* 属性値を取得します
*/
public function getAttribute($name)
{
if ($this->_nodePath != '' && $this->_xpath != null )
$this を返す->_xpath->query($this->_nodePath)->item(0)->getAttribute($name);  
else
falseを返します。  
}

public function __get($name)
{
if($name == 'innertext')
return $this->text();  
else
return $this->getAttribute($name);  
}
}
$xp = new xf_HtmlDom();  
$xp->loadHtml('http://www.aizhan.com/siteall/www.opendir.cn/'); 
$rows = $xp->find("td[@id='baidu']/a", 0)->innertext;  
print_r($rows); 

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/313589.html技術記事例: ?php $oldSetting = libxml_use_internal_errors( true ); libxml_clear_errors(); /** * * -+-------------------------------------------- * |PHP5 フレームワーク - 2011 * |わ...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。