通过URL抓取网页的TITLE,有些网站抓不到,方法愚笨,求指点。
程序员文章站
2022-06-08 18:35:09
...
本帖最后由 u012716911 于 2013-11-04 11:25:29 编辑
有些网站可以抓到,如百度,有些网站就抓不到,比如太平洋汽车的首页。
([\s\S]*?) (.*?)/is",$content_source,$title))
s 如果设定了此修正符,模式中的圆点元字符(.) 匹配所有的字符,包括换行符。没有此设定的话,则不包括换行符。(.*?)/is",$content_source,$title))
s 如果设定了此修正符,模式中的圆点元字符(.) 匹配所有的字符,包括换行符。没有此设定的话,则不包括换行符。
非常感谢
curl 抓取 标题
代码是我自己这样想着写的,不知道还有没有更好的方法。请各位给些指点有些网站可以抓到,如百度,有些网站就抓不到,比如太平洋汽车的首页。
public function set_title() { // 获取进来URL $url = $_POST['url']; // $url = "www.pcauto.com.cn"; 抓不到! //一连串的curl设置 $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_HEADER,0); curl_setopt($ch,CURLOPT_ENCODING,'gzip'); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); $content_source = curl_exec($ch); curl_close($ch); //获取抓到内容的编码格式 $encode = mb_detect_encoding($content_source, array('GB2312','GBK','UTF-8','ASCII')); //转码 $content_source = iconv($encode, 'utf-8//IGNORE',$content_source); //截取if(preg_match("/ (.*?)/i",$content_source,$title)) { echo $title[1]; } else { echo '拉取标题失败'; } }
回复讨论(解决方案)
问题出在正则匹配那里,你加个 s 修正符就好了
if(preg_match("/
s 如果设定了此修正符,模式中的圆点元字符(.) 匹配所有的字符,包括换行符。没有此设定的话,则不包括换行符。
正则修饰符
问题出在正则匹配那里,你加个 s 修正符就好了
if(preg_match("/
s 如果设定了此修正符,模式中的圆点元字符(.) 匹配所有的字符,包括换行符。没有此设定的话,则不包括换行符。
非常感谢