PHP Crawler没有抓取所有元素

时间:2016-07-24 13:02:46

标签: php web-crawler simple-html-dom

所以我正在尝试制作一个PHP抓取工具(供个人使用)。 代码所做的是为每个ebay拍卖项目显示“找到”,发现它在不到1小时内结束但似乎有问题。爬虫无法获取所有span元素,“剩余时间”元素是a。

下载simple_html_dom.php而不进行编辑。

 <?php include_once('simple_html_dom.php');

//url which i want to crawl -contains GET DATA-

    $url = 'http://www.ebay.de/sch/Apple-Notebooks/111422/i.html?LH_Auction=1&Produktfamilie=MacBook%7CMacBook%2520Air%7CMacBook%2520Pro%7C%21&LH_ItemCondition=1000%7C1500%7C2500%7C3000&_dcat=111422&rt=nc&_mPrRngCbx=1&_udlo&_udhi=20';

    $html = new simple_html_dom();
    $html->load_file($url);
    foreach($html->find('span') as $part){
        echo $part;
//when i echo $part it does display many span elements but not the remaining time ones
        $cur_class = $part->class;

//the class attribute of an auction item that ends in less than an hour is equal with "MINUTES timeMs alert60Red"
        if($cur_class == 'MINUTES timeMs alert60Red'){
            echo 'found';
        }
    }
    ?>

任何答案都会有用,提前谢谢

2 个答案:

答案 0 :(得分:0)

查看获取的HTML似乎是通过JavaScript设置类alert60Red。所以你找不到它,因为JavaScript永远不会被执行。

所以只搜索MINUTES timeMs看起来也很稳定。

<?php
    include_once('simple_html_dom.php');

    $url = 'http://www.ebay.de/sch/Apple-Notebooks/111422/i.html?LH_Auction=1&Produktfamilie=MacBook%7CMacBook%2520Air%7CMacBook%2520Pro%7C%21&LH_ItemCondition=1000%7C1500%7C2500%7C3000&_dcat=111422&rt=nc&_mPrRngCbx=1&_udlo&_udhi=20';

    $html = new simple_html_dom();
    $html->load_file($url);
    foreach ($html->find('span') as $part) {
        $cur_class = $part->class;

        if (strpos($cur_class, 'MINUTES timeMs') !== false) {
            echo 'found';
        }
    }

答案 1 :(得分:0)

如果一段代码包含在另一个php文件中,或者html嵌入在php中,则浏览器无法看到它。

所以没有webcrawl api可以检测到它。我认为你最好的办法是找到simple_html_Dom.php的位置,并尝试以某种方式抓取该文件。您甚至可能无法访问它。这很棘手。

如果您的api具有该功能,您还可以尝试通过Id查找?