Heim >Backend-Entwicklung >PHP-Tutorial >通过URL抓取网页的TITLE,有些网站抓不到,方法愚笨,求指点。

通过URL抓取网页的TITLE,有些网站抓不到,方法愚笨,求指点。

WBOY
WBOYOriginal
2016-06-23 14:26:241155Durchsuche

本帖最后由 u012716911 于 2013-11-04 11:25:29 编辑

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);				//截取<title>		if(preg_match("/<title>(.*?)<\/title>/i",$content_source,$title))		{			echo $title[1];		}		else		{			echo '拉取标题失败';		}	}

回复讨论(解决方案)

([\s\S]*?) <p class="sougouAnswer"> 问题出在正则匹配那里,你加个 s 修正符就好了 <br> if(preg_match("/</p> <title>(.*?)/is",$content_source,$title)) <br> <br> s  如果设定了此修正符,模式中的圆点元字符(.) 匹配所有的字符,包括换行符。没有此设定的话,则不包括换行符。 <p class="sougouAnswer"> 正则修饰符 </p> <p class="sougouAnswer"> 问题出在正则匹配那里,你加个 s 修正符就好了 <br> if(preg_match("/</p> <title>(.*?)/is",$content_source,$title)) <br> <br> s  如果设定了此修正符,模式中的圆点元字符(.) 匹配所有的字符,包括换行符。没有此设定的话,则不包括换行符。 <br> 非常感谢
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn