返回多个相同结果

时间:2015-12-31 07:21:34

标签: php

我正在使用simple_html_dom来抓取一个网站,所有内容都被删除了,但它多次显示已删除的数据。

这是我试图抓的选择器,我认为这会导致问题。

#wrapper > div.container > div > h3 > a

您可以查看我的示例[Link Removed]。

我的代码就是我目前正在使用的代码。

$html = file_get_html('http://www.example.com/sitefile.php?s=1&page='.$page.'');

foreach($html->find('#wrapper > div.container > div: > h3') as $element) 
{
    echo '<br><br>';
    echo $url = $element->href;

    $html2 = file_get_html($url);

    echo '<br>';    

    $title = $html2->find('#primary > div > div > div > h1',0);
    echo $title = ucwords(strtolower($title->plaintext));

    echo '<br>';

    $youtube = $html2->find('#Playerholder > iframe',0);

    preg_match("/embed\/(.*)\?/", $youtube->src, $output_array);

    echo $youtube = $output_array[1];       
}

1 个答案:

答案 0 :(得分:2)

发现了这个问题。

显然,您尝试从中获取内容的网站有两个不同的位置,使用相同的选择器,您正在为#wrapper > div.container > div > h3 > a抓取,这就是为什么它会返回多个结果所以请尝试将此foreach($html->find('#wrapper > div.container > div: > h3') as $element)更改为此foreach($html->find('.omega-grid > h3 > a') as $element),并且您应该拥有您正在寻找的输出。

编辑:

foreach($html->find('.omega-grid > h3 > a') as $element) 
{
    echo '<br><br>';
    echo $url = $element->href;

    $html2 = file_get_html($url);

    echo '<br>';    

    $title = $html2->find('#primary > div > div > div > h1',0);
    echo $title = ucwords(strtolower($title->plaintext));

    echo '<br>';

    $youtube = $html2->find('#Playerholder > iframe',0);

    preg_match("/embed\/(.*)\?/", $youtube->src, $output_array);

    echo $youtube = $output_array[1];       
}