PHP遍历整个页面,抓取所有链接

时间:2013-03-16 17:56:05

标签: php curl

我编写了这个脚本,它可以工作,但只抓住页面上的第一个链接,然后停止:

<?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文件是我有脚本抓取的页面列表。 当我运行这个时,我会在每个页面上看到第一个链接。

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

然后我将它写入txt文件。 有没有人知道一种修改方法,继续在页面上查找所有代码之间的迭代

<a href=" 

AND

">

我已经考虑过了,并在网上看到了如何实现这一目标,但无济于事。

1 个答案:

答案 0 :(得分:1)

您需要使用preg_match_all代替preg_matchpreg_match返回第一次出现,preg_match_all执行全局正则表达式并搜索所有实例。

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