私はScraperWikiを使用して、オンラインストアからリンクを取得する単純なスクリーンスクレイパーを構築しています。ストアには複数のページがあるので、最初のページからすべてのリンクを取得し、ポケットベルで[次へ]ボタンを見つけ、そのURLに移動し、そこからすべてのリンクを検索し、次のページに移動します。など。
これが私がいるところです。ScraperWikiは、単純なHTMLDOMおよびCSSセレクターを使用します。
<?php
require 'scraperwiki/simple_html_dom.php';
function nextPage(){
$next = $html->find("li.pager-next a");
$nextUrl = 'http://www.domain.com';
$nextUrl .= $next->href . "\n";
getLinks($nextUrl);
}
function getLinks($url){ // gets links from product list page
$html_content = scraperwiki::scrape($url);
$html = str_get_html($html_content);
$x = 0;
foreach ($html->find("div.views-row a.imagecache-product_list") as $el) {
$url = $el->href . "\n";
$allLinks[$x] = 'http://www.domain.com';
$allLinks[$x] .= $url;
$x++;
}
nextPage();
}
getLinks("http://www.domain.com/foo/bar");
print_r($allLinks);
?>
関数が関数にない場合、getLinks()
関数は正常に機能しますが、関数に入れると「宣言されていない変数」エラーが発生します。私の質問は:
PHPでは、Javascriptのように、スクリプト全体で使用する空の変数/配列を宣言できますか?私はここStackでいくつかの回答を読みましたが、これは宣言する必要がないことを意味しているようですが、これは奇妙に思えます。