PHP和curl用于屏幕抓取


PHP and curl result for screen scraping

我希望得到一个url的确切列表,其中有一个项目列表存储在数据库中,并使用它之后。问题是我只得到了第一项。我想要这一页的清单,然后翻到第二页,第三页,第四页……如果可能的话,删掉所有的链接。

我想获得的http:..............html的帖子和标题,然后转到下一页,获得所有的页面等,并将它们存储在数据库中。

下面是我使用的代码:
$url ='http://newyork.craigslist.org/search/jjj?addFour=part-time';
$timeout = 10; 
$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true); 
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

  $data = curl_exec($ch);
  curl_close($ch);
 function get_matched($pattern,$data)
 {
 preg_match($pattern,$data,$match);
 return $match[1];
  }
  $pattern= "/<p>(.*?)<'/p>/";
  $caty= get_matched($pattern,$data);

 echo "$caty";

我该怎么做?

  1. preg_*使用错误

    preg_match将只尝试找到一个匹配,然后返回-您正在寻找preg_match_all,因为您想要多个匹配。

    • PHP: preg_match - Manual
    • PHP: preg_match_all - Manual

  2. 循环/递归在哪里?

    如果你想这样做,你需要某种循环或递归函数来保持从新发现的链接中获取数据,并且那里的数据应该按照相同的模式获取。

    网上有很多关于如何编写一个简单的scraper的资源,其中包括:

      如何在PHP中制作一个简单的网络爬虫?
  3. 构建一个基本的网络爬虫从页面中提取信息

这是最好的链接:

http://php.net/manual/en/book.curl.php