0

嗨,我很难循环我的 curl 函数并自动化这项工作。

$scrape_url 是一个从页面中获取链接的函数。scrape_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 页,我需要获取其他页面

更新:scrape_nextpage() 是一个 curl 函数,用于获取下一页的 url(例如:

scrape_nextpage() 抓取网址:“website.com/next30post.html”;

因此在 scrape_url($url) 中使用的新 $url 变为 "website.com/next30post.html" 。

然后我用 scrape_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 时get_nextpage()返回或一个空字符串 - 这将打破 while 循环。FALSE

更新:

您的函数命名非常模糊。完全不清楚他们做了什么。你想要清晰的名字。

例如,您需要一个函数get_content($url);来获取某个页面的 url(例如,http://website.com)并返回该网页的 HTML。您需要的第二个函数是一个函数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 回答