使用php抓取html数据
如何将使用php抓取html数据,php,html,Php,Html,如何将HTML数据解析为PHP数组PHP HTML数据 <div class="test"> <strong>ID</strong> <a href="a.html" title="a html">123456</a><br> <label class='label'>Occupation </label>
HTML数据解析为PHP数组PHP
HTML数据
<div class="test">
<strong>ID</strong>
<a href="a.html" title="a html">123456</a><br>
<label class='label'>Occupation </label>
House wife <br>
<label>Language?</label>
English <br>
<label style="width:50%">Basic Language Knowledge of?</label>
Hindi <br>
<label>Start date</label>
Nov 2013 <br>
<label>Other Info</label>
yes <br>
<label>age</label>
19 <br>
<label>Gender</label>
Female <br>
<strong>Address</strong>
India <br><br>
<p>Hi, <br>
Lorem ipsum doner inut</p>
</div>
ID
职业
家庭主妇
语言?
英语
基本的语言知识?
印地语
开始日期
2013年11月
其他信息
是
年龄
19
性别
女性
地址
印度
嗨,
同侧耳
我试过这个
<?php
$html='Let above html to parse';
preg_match_all('/<label\s(.*)>(.*)<\/label>/U',$html,$m);
print_r($m);
// gives all label contents only but I need pair of label text
// and value showing after it
?>
输出类似
数组('ID'=>123456,'link'=>a.html','occulation'=>House
妻子“,”语言“=>”英语“,”基本语言知识
其中?“=>”印地语“、”开始日期“=>”2013年11月“、”其他信息“=>”是”
“年龄”=>“19”、“性别”=>“女性”、“地址”=>“印度”、“描述”=>“嗨,
"同侧眼",
是的,忘了提到
我正在使用的刮取
用于解析HTML
$doc = new DOMDocument();
$doc->loadHTML($html);
和用于获取所有标签:
$xpath = new DOMXPath($doc);
$allLabels = $xpath->query('//label');
foreach($allLabels as $label) {
var_dump($label, $label->nodeValue);
/* or */
$labelElmnts = $xpath->query('/*', $label);
$innerHTML = '';
foreach($labelElmnts as $elmnt)
$innerHTML .= $domDoc->saveHTML($elmnt);
var_dump($innerHTML);
}
更简单的解决方案
使用:
就像jquery一样。我使用了ganon
,所以我不想使用Dom文档
我尝试了一些东西,然后工作了
比如
// for description
echo $desc=$html('div.right_div p',0)->getInnerText();
$s=$html('div.right_div',0)->getInnerText();
// for occupation
$r='/<label>\s*Occupation\s*<\/label>\s*(.*)\s*<br\s*[\/]>/i';
preg_match_all($r,$s,$ma);
echo $occupation=$ma[1];
// for address
$r='/<strong>\s*Address\s*<\/strong>\s*(.*)\s*<br\s*[\/]>/i';
preg_match_all($r,$s,$ma);
echo $address=$ma[1];
// for id
echo $id=$html('div.right_div a',0)->getInnerText();
//用于说明
echo$desc=$html('div.right_div p',0)->getInnerText();
$s=$html('div.right_div',0)->getInnerText();
//职业
$r='/\s*职业\s*\s*(.*)\s*/i';
预赛(r$s$ma);
echo$occulation=$ma[1];
//地址
$r='/\s*地址\s*\s*(.*)\s*/i';
预赛(r$s$ma);
echo$address=$ma[1];
//身份证
echo$id=$html('div.right_div a',0)->getInnerText();
以此类推,..那么问题出在哪里呢?它只会给出标签数据的列表,我需要标签数据后面的文本,比如,
职业=>'house-fixer'`阅读文档:<代码>->nodeValue
是您正在寻找的。请看一下我在答案中编辑的代码。
// for description
echo $desc=$html('div.right_div p',0)->getInnerText();
$s=$html('div.right_div',0)->getInnerText();
// for occupation
$r='/<label>\s*Occupation\s*<\/label>\s*(.*)\s*<br\s*[\/]>/i';
preg_match_all($r,$s,$ma);
echo $occupation=$ma[1];
// for address
$r='/<strong>\s*Address\s*<\/strong>\s*(.*)\s*<br\s*[\/]>/i';
preg_match_all($r,$s,$ma);
echo $address=$ma[1];
// for id
echo $id=$html('div.right_div a',0)->getInnerText();