作者ez880 (被捅我也爽)
看板PHP
标题Re: [请益] PHP切割远端网页原始码
时间Tue May 10 12:29:35 2011
※ 引述《troy1005 (小新)》之铭言:
: 询问的问题是我想切割这个网址:http://tinyurl.com/6c6njg8
: 找出无名小站文章的网址出来 在原始码中的第一个内容是
: http%3a//www.wretch.cc/blog/love52071835/1953378"
: ------------------以下是我的程式码------------------
: $url = 目标网址
: $fp = file_get_contents($url);
: $url_count = preg_match_all
: ( '/http%3a\:\/\/www\.wretch\.cc\/blog\/(.*)\/(.*)/',$fp,$match);
: $i=0;
: while($i<10){
: $title = $match[i];
: echo "Title[$i]: $title </br>";
: $i++;
: }
: 这样执行结果一直都没有东西 想请问问题可能是出在哪里?
: 另外不太懂(.*)跟(.+?)的分别 希望可以大概说明一下 谢谢
: 有违反版规 麻烦请告知
请爱用
function get_page($url,$PostData=false) {
$user_agent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0;
Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); //设定截取网址
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); //浏览器的user agent
curl_setopt($ch, CURLOPT_HEADER, 0); //是否截取header的资讯
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //是否抓取转址
if($PostData != false) curl_setopt($ch,CURLOPT_POSTFIELDS,$PostData); // 将
post资料塞入
$html = curl_exec($ch);
curl_close($ch);
return $html;
}
然後关於抓取资料
preg_match_all('/<tr[^>]*class=\'basictxt\'[^>]*>(.*?)<\/tr>/si',$html,$match);
这上面的意思是 我要抓 class='basictxt' 的 tr 里面的东西
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.32.228.158