3.15. XML

简介:

3.15.1. DOM

3.15.1.1. loadHTML

		
$html =  curl($url);
libxml_use_internal_errors(true);

$dom = new DOMDocument();
$dom->loadHTML($html);		
		
		

3.15.1.2. XPath

3.15.1.2.1. evaluate
			
<?php
$doc = new DOMDocument();
$doc->loadHTMLFile('http://netkiller.github.io/');
 
$xpath = new DOMXPath($doc);
$title = $xpath->evaluate('string(/html/head/title)');
 
echo "Document title is: " . $title . "\n";
?>		
			
			
3.15.1.2.2. query
			

 <?php 
 function curl($url, $fields = array(), $auth = false){
    	$url_arr = parse_url($url);
    	$curl = curl_init($url);
    	$headers = array(
    			'Accept: text/plain, */*; q=0.01',
    			'Accept-Encoding: gzip, deflate',
    			'Accept-Language: zh-CN,zh;q=0.8,en;q=0.6,vi;q=0.4,zh-TW;q=0.2',
    			'Connection: keep-alive',
    			'Content-Type: application/x-www-form-urlencoded; charset=UTF-8',
    	);
    	$headers[]= 'Host: '.$url_arr['host'];
    	$headers[]= 'Origin: https://'.$url_arr['host'];
    	$headers[]= 'X-Requested-With: XMLHttpRequest';
    	
//    	curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    	curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1");
    	curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    	curl_setopt($curl, CURLOPT_VERBOSE, 0);
    	curl_setopt($curl, CURLOPT_HEADER, 0);
    	curl_setopt($curl, CURLOPT_REFERER,   $url) ;
    	curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
//    	curl_setopt($curl, CURLOPT_COOKIEFILE, $jar);
//    	curl_setopt($curl, CURLOPT_COOKIEJAR, $jar);
    	 
//    	if($auth){
//    		curl_setopt($curl, CURLOPT_USERPWD, "$auth");
//    		curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
//    	}
    
    	if($fields){
    		$fields_string = http_build_query($fields);
    		curl_setopt($curl, CURLOPT_POST, true);
    		curl_setopt($curl, CURLOPT_BINARYTRANSFER, true);
    		curl_setopt($curl, CURLOPT_POSTFIELDS, $fields_string);
    	}
    	$response = curl_exec($curl);
    	curl_close($curl);
//    	$this->referer = $url;
    	return $response;
    }
$url = "http://netkiller.github.io/journal/index.html";
$html =  curl($url);
libxml_use_internal_errors(true);

$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);

$xml = $xpath->query('//div[@class="section"]');

foreach ($xml as $result_object){
	//echo $result_object->childNodes->item(0)->nodeValue;
	print_r($result_object);
}				
			
			

3.15.1.3. saveHTML

下面的例子是从某个网站扣取一个HTML块的例子

		

$url = "http://netkiller.github.io/journal/index.html";
$html =  curl($url);
libxml_use_internal_errors(true);

$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);

$xml = $xpath->query('//div[@class="section"]');

$xhtml = $dom->saveHTML($xml->item(0));

print_r($xhtml);
		
	




原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

目录
相关文章
|
12天前
|
XML 开发框架 .NET
服务器上的 XML
服务器上的 XML
|
1月前
|
XML 存储 Web App开发
查看 XML 文件
查看 XML 文件
|
3月前
|
XML 存储 JavaScript
xml介绍与解析,及xml库包使用
xml介绍与解析,及xml库包使用
34 0
|
3月前
|
XML 存储 数据库
什么是 XML?
【8月更文挑战第22天】
44 0
|
6月前
|
XML 数据格式
|
XML Java 区块链
为什么需要用xml
为什么需要用xml
|
XML 存储 JSON
【XML学习 一】XML基础
【XML学习 一】XML基础
148 0
|
XML JSON JavaScript
了解xml
即使在xml被json'替代的今天,你也应该了解它。
168 0
|
XML 存储 PHP
XML简单基础详解(I)
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
109 0
XML简单基础详解(I)
|
XML 存储 数据处理
xml
xml
100 0