0

こんにちは私は私のカール関数をループしてジョブを自動化するのに苦労しています。

$ scrape_urlは、ページからリンクを取得する関数です。scare_nextpageは、「次の」ページのURLを取得する関数であり、ここで$ scrape_urlを再度使用します。これまでのところ、私のコードは次のとおりです。

$url = "http://website.com";   

$results_page = scrape_url($url); 

 if ( $url !==scrape_nextpage($url) ) {

        $url = scrape_nextpage($url);

       $results_page = scrape_url($url);

そして、ページで見つけた各$ urlをループしたい(ページネーションを通過するようなもの)

これまでのところ、最初の2ページしか取得できず、他のページをフェッチする必要があります

更新:scrap_nextpage()は、次のページのURLを取得するcurl関数です(例:

scare_nextpage()はURLを取得します: "website.com/next30post.html";

したがって、scrap_url($ url)で使用する新しい$ urlは、「website.com/next30post.html」になります。

次に、scrap_nextpage()を使用して同じページをフェッチし、「website.com/next60post.html」を取得します。等々 。

ご協力いただきありがとうございます

4

1 に答える 1

0

私はあなたがこのようなものを探していると思います:

$url = "http://website.com";  
$results_page = scrape_url($url);  

while ($url !== scrape_nextpage($url))
{
    $url = get_nextpage($url);
    if (!$url) {
        break;
    }
    $results_page = scrape_url($url);
    // do something with $results_page
}

チェックする URL がなくなったら、必ずreturn または空の文字列をget_nextpage()返すようにしてください。これにより、while ループが中断されます。FALSE

アップデート:

関数の命名は非常にあいまいです。彼らが何をしているのかはまったく不明です。明確な名前が必要です。

get_content($url);例として、あるページの URL (例: http://website.com) を受け取り、その Web ページの HTML を返す関数が必要だとします。必要な 2 番目の関数は、grab_links($html);あるページの HTML を解析し、そこで見つかったリンクを返す関数です。次に、コードは次のようになります。

$list_of_urls = array(
    "http://website.com"
    );
foreach ($list_of_urls as $url)
{
    $html = get_content($url);
    $links = grab_links($html);
    // do something with $links
}

これで、これは明確になり、簡単にデバッグできます。

于 2013-03-15T15:46:54.393 に答える