DOMDocument PHP网页抓取

时间:2014-05-10 18:41:06

标签: php web-scraping domdocument

我想知道是否有任何方法可以使用dom来选择具有动态标签的元素。所有标签都以link_(某些id)开头。

示例:

<tr id="link_111111">something in here...</tr>

<tr id="link_222222">something in here...</tr>

<tr id="link_333333">something in here...</tr>

<tr id="link_444444">something in here...</tr>

<tr id="link_555555">something in here...</tr>

我想知道我是否能抓住所有带有link_的id的tr,因为我没有特定的id,它们是随机的。

3 个答案:

答案 0 :(得分:4)

您可以使用XPath表达式来实现此目的:

//tr[starts-with(@id, "link")]

示例:

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

$xpath = new DOMXPath($dom);
$nodes = $xpath->query('///tr[starts-with(@id, "link")]');

foreach ($nodes as $node) {
    // Do whatever
}

Demo

答案 1 :(得分:1)

DOM方式使用一些字符串函数......

$dom = new DOMDocument;
$dom->loadHTML($html); $tagK = 'link_';
foreach ($dom->getElementsByTagName('tr') as $tag) {
    if (substr(strtolower($tag->getAttribute('id')),0,strlen($tagK))===$tagK) {
        echo $tag->getAttribute('id').PHP_EOL; 
    }
}

Demo

答案 2 :(得分:0)

或者如果你想拥有更灵活的方式并且易于使用Web Scrape ..我建议你看看 https://github.com/fabpot/goutte充当包装器。您还可以用来点击链接或提交表单..

我使用Goutte Class进行Web Scraping的一些教程。随意检查它。 http://iapdesign.com/webdev/laravel-4-webdev/superb-web-scraping-tutorials-using-laravel-4/