我有关于HTML网页抓图的问题。
<div class="mbs fwb">
<a href="/groups/291064327770896/" data-hovercard="/ajax/hovercard/group.php?id=291064327770896" aria-owns="js_0" aria-haspopup="true" aria-describedby="js_1" id="js_2">
NCR Business Startups </a>
</div>
<div class="mbs fwb" >
<a href="/groups/Analystamit/" data-hovercard="/ajax/hovercard/group.php?id=158649140871478" aria-owns="js_0" aria-haspopup="true" aria-describedby="js_1" id="js_2">
Risk Professionals </a>
</div>
我需要抓住锚标记data-hovercard
字段。
以下是我使用的代码:
include('simple_html_dom.php');
$html = file_get_html('http://sampleurl.com/taki.html');
foreach($html->find('div[class="mbs fwb"]') as $desc11)
foreach($desc11->find('a') as $desc12)
echo $desc12->data-hovercard . '<br>';
它不起作用。结果我得到了:
0
0
我想要一个这样的结果:
/ajax/hovercard/group.php?id=291064327770896
/ajax/hovercard/group.php?id=158649140871478
答案 0 :(得分:0)
使用带有以下模式的正则表达式:/ data-hovercard =&#34;([^&#34;] *)&#34; / gi;
由此产生的匹配&#39; &#34; \ 1&#34;将包含该属性的所有值。您可能需要从源文本中删除换行符,以便进行良好的内务管理。
希望这有帮助。
答案 1 :(得分:0)
您可以使用内置的SimpleXMLElement类和XPath查询执行此操作:
$xml = new SimpleXMLElement('http://foo.bar/baz.html', null, true);
$anchors = $xml->xpath('//div[@class="mbs fwb"]/a');
foreach ($anchors as $a) {
echo $a['data-hovercard'], PHP_EOL;
}
输出,假设baz.html是包含div的有效HTML文件 从问题:
/ajax/hovercard/group.php?id=291064327770896
/ajax/hovercard/group.php?id=158649140871478