0

私はこのスクリプトを書きましたが、動作しますが、ページの最初のリンクのみを取得してから停止します:

<?php
$handle = fopen("localurls.csv","r");
while(($line=fgetcsv($handle))!==FALSE) {

$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => $line[0],
));
$resp = curl_exec($curl);
curl_close($curl);
$regex_body = '%<a href="(.+?)">%s';
$myBody = preg_match($regex_body, $resp, $matches);
$myFile = "localdownload.txt";
$fh = fopen($myFile, 'a') or die("can't open file");
fwrite($fh, $matches[0]);
fclose($fh);
sleep(2);
}
?>

.csv ファイルは、スクリプトがクロールするページのリストです。これを実行すると、各ページに最初のリンクが表示されます.. IE

<a href="www.google.com">

次に、それをtxtファイルに書き込みます。これを変更して、その間のコードのすべての反復をページで引き続き検索する方法を知っている人はいますか?

<a href=" 

">

私はそれについて考え、これを達成する方法をオンラインで探しましたが、役に立ちませんでした.

4

1 に答える 1

1

preg_match_allの代わりに使用する必要がありますpreg_matchpreg_match最初のオカレンスを返し、グローバルpreg_match_all正規表現を実行し、すべてのインスタンスを検索します。

http://www.php.net/manual/en/function.preg-match-all.php

于 2013-03-16T18:15:09.167 に答える