PHP-从网站的多个页面检索特定内容

时间:2013-05-13 10:24:42

标签: php dom

我想要完成的任务可能有点硬核,但我想知道它是否可能:

问题:
我的问题与PHP-Retrieve content from page相同,但我想在多个页面上使用它。

情况:
我正在使用一个关于电视节目的网站。所有的电视节目都有相同的网址,然后是节目的名称:
http://bierdopje.com/shows/NAME_OF_SHOW
在每个节目页面上,都有一行告诉您节目是否已取消或仍在运行。我想检索该行以概述已取消的节目(该网站仅支持正在运行的节目的概述,因此我想制作一个额外的功能)。

真正的问题:
如何告诉DOM检索所有节目并检查节目的状态? (http://bierdopje.com/shows/ *)。

注意:
我知道这个过程可能需要一段时间,因为它正在阅读整个网站(或者数据太多了吗?)。

2 个答案:

答案 0 :(得分:1)

使用此代码仅从单个网站获取链接。

include_once('simple_html_dom.php');

$html = file_get_html('http://www.couponrani.com/');

// Find all links
foreach($html->find('a') as $element) 
       echo $element->href . '<br>';

答案 1 :(得分:0)

我使用phpquery从网页获取数据,例如Dom中的jQuery。

例如,要获取所有节目的列表,您可以执行以下操作:

<?php
require_once 'phpQuery/phpQuery/phpQuery.php';

$doc = phpQuery::newDocumentHTML(
    file_get_contents('http://www.bierdopje.com/shows')
);

foreach (pq('.listing a') as $key => $a) {

    $url = pq($a)->attr('href'); // will give "/shows/07-ghost"
    $show = pq($a)->text(); // will give "07 Ghost"

} 

现在,您可以单独处理所有节目,为每个节目制作新的phpQuery :: newDocumentHTML,并使用选择器提取您需要的信息。


获取节目的状态

$html = file_get_contents('http://www.bierdopje.com/shows/alcatraz');
$doc = phpQuery::newDocumentHTML($html);

$status = pq('.content>span:nth-child(6)')->text();