Snoopy 経由で単純な php Web クローラーを実行しています - http://turma.sourceforge.net/web/urlator/snoopy.html - しかし、Fetchlinks() 関数には少し問題があります。通常、fetchlinks() はページ上のすべてのリンクを取得し、それらをうまく配列に挿入します。これはすべての http:// リンクに対して正常に機能しますが、https:// リンクはすべて http:// リンクに追加され、配列内の独自のスロットには配置されません。
破損した https リンクの例:
[472] => http://www.vapetropolis.ca/returns/https://www.vapetropolis.ca/product-warranties [473] => http://www.vapetropolis.ca/vaporizer-parts/davinci -気化器/https://www.vapetropolis.ca/product-warranties/https://www.vapetropolis.ca/customer/account/
ご覧のとおり、適切な形式の http:// リンクに追加されています。
これは、これを生成するコードです
function crawl_link($link, array &$sitewide_link_list) {
$snoopy = new Snoopy;
//Get all links from first page
$snoopy->fetchlinks($link);
$currPage = $snoopy->results;
//Add all links to global array
//First, filter the links
//Ensure all links are from correct domain
$parsedDomain = 'www.vapetropolis.ca';
if (is_array($currPage)) {
foreach ($currPage as $link) {
if ($parsedDomain == parse_url( $link, PHP_URL_HOST )) {
if (!in_array($link, $sitewide_link_list)) {
array_push($sitewide_link_list, $link);
}
}
}
}
}
//Start crawl
//Global array of links
$sitewide_link_list = array();
$checkList = array();
$done = false;
$domain = 'http://www.vapetropolis.ca';
crawl_link($domain, $sitewide_link_list);
print_r($sitewide_link_list);
何が起こっているのか手がかりはありますか?