正则抓取天涯数据,递归失败,求解。。。。
我是抓的一个模块(鬼话)。
它的下一页是用时间戳来搞的。
我就想,在抓取第一页的所有标题URL之后,顺便抓取下一页的地址(‘可以抓取’);
现在是,第一页的所有标题的URL抓完了,下一页的URL也抓了,
我想递归100次,抓100页的所有标题的URL。
看代码吧。
public function getAllPage($url){
/**
* curl_setopt($ch, CURLOPT_FAILONERROR, true);//记录错误信息设置
* curl_errno可以获得错误码,当然也包括错误的http状态码
curl_error可以获得错误信息
*/
$ch = curl_init($url);//初始化一个句柄
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_TIMEOUT,1111111);
$html = curl_exec($ch);
curl_close($ch);
//修饰一下,从何时开始。
$length = strpos($html, 'class="mt5');
$newHtml = substr($html, $length);
//修饰END
$pattern = "#\/post-.*\.shtml#i"; //正则表达式
preg_match_all($pattern, $newHtml,$matches);
//抓取下一页链接地址
$nextPagePattern = "#\<a href=\"(.*)\"\srel#";
preg_match($nextPagePattern, $newHtml,$nextPage);
$nextPageUrl = "http://bbs.tianya.cn".$nextPage['1'];
//下一页 END
//链接。全。
foreach($matches['0'] as $k=>$v){
$matches[$k] = 'http://bbs.tianya.cn'.$v;
}
//之前的递归是在这里的,一运行直接死掉了。。。。。
return array(
'0'=>$matches,
'1'=>$nextPageUrl,
);
}我想问一下,这个思路有没有问题?
递归的代码方便给一个么= =!!
相关推荐
深度分析正则(pcre)最大回溯/递归限制
今天,Tank问了一个问题, 对于如下的正则: 代码如下: /[removed].*?<\/script>/i 当要匹配的字符串长度大于100014的时候, 就不会得出正确结果: 代码如下: $reg = “/[removed].*?<\/script>/is”; $str = “[removed]********[removed]”; //长度大于100014 $ret = preg_replace($reg, “”, $str); //返回NULL 难道正则对匹配的串有长度限制? 不是, 当然不是, 原因是这样的, 在PHP的pcre扩展中, 提供了俩个设置项. 代码如下: pcre.
抓取系统开发分享
抓取系统开发的分享,文档形式提供给大家学习参考使用。
C#正则表达式的递归匹配分析
在C#程序设计中经常会遇到这样的需求,要求匹配出成对的小括号里的内容,但是一般正则表达式中的 ?R 的语法似乎在C#中不被支持, 经过一番查找与测试,终于找到以下一段描述 /( 应该是 \( 不是用 /转义而是用 \来转义 匹配嵌套的构造 微软公司已经包含了一个有趣的创新来匹配稳定的构造(历史上,这是正则表达式所做不到的)。这并不容易掌握 — 尽管这节较短,但是注意,它非常的晦涩难懂。 从一个例子开始可能更简单一些,所以我用这段代码作为开始: Regex r = new Regex(@/((?>[^()]+|/((?<DEPTH>)|/)(?<-DEPTH>))*(?(DEPTH)(
c++迷宫求解,用栈,递归
c++迷宫求解,用栈,递归 doc类型文档
golang如何实现抓取IP地址的蜘蛛程序详解
主要给大家介绍了关于利用golang如何实现抓取IP地址的蜘蛛程序的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧


基础编程
