如何在链接内使用PHP dom webscrap HTML

时间:2015-07-18 14:16:47

标签: php html web-scraping domdocument

我有关于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

2 个答案:

答案 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