這篇文章介紹的內容是關於PHP抓取百度搜尋結果頁面的【相關搜尋字詞】並儲存,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
一、百度搜尋關鍵詞【知了殼公司轉讓】
【知了殼公司轉讓】搜尋連結
https://www.baidu.com/s?wd=%E7%9F%A5%E4%BA%86%E5%A3%B3%E5%85%AC%E5%8F%B8%E8%BD%AC%E8%AE%A9
**搜尋結果部分原始碼**<p id="rs"><p class="tt">相關搜尋</p><table cellpadding="0"><tbody><tr><th><a href="/s?wd=%E5%85%AC%E5%8F%B8%E8%BD%AC%E8%AE%A9%E6%B5%81%E7%A8%8B%E7%9F%A5%E4%BA%86%E5%A3%B3&rsp=0&f=1&oq=%E7%9F%A5%E4%BA%86%E5%A3%B3%E5%85%AC%E5%8F%B8%E8%BD%AC%E8%AE%A9&tn=baiduhome_pg&ie=utf-8&rsv_idx=2&rsv_pq=88c7804a0000c417&rsv_t=b5f3JkJIsj6Nkp61K%2BmmVGeev7UP95o1HSJTUoIS2xV4SsmZxvOoVf%2BAZaVoihB%2BT3bg&rqlang=cn&rsv_ers=xn0&rs_src=0&rsv_pq=88c7804a0000c417&rsv_t=b5f3JkJIsj6Nkp61K%2BmmVGeev7UP95o1HSJTUoIS2xV4SsmZxvOoVf%2BAZaVoihB%2BT3bg">公司轉讓流程知了殼</a></th>..........<th><a href="/s?wd=%E7%9F%A5%E4%BA%86%E5%A3%B3%E5%85%AC%E5%8F%B8%E6%B3%A8%E5%86%8C&rsp=8&f=1&oq=%E7%9F%A5%E4%BA%86%E5%A3%B3%E5%85%AC%E5%8F%B8%E8%BD%AC%E8%AE%A9&tn=baiduhome_pg&ie=utf-8&rsv_idx=2&rsv_pq=88c7804a0000c417&rsv_t=b5f3JkJIsj6Nkp61K%2BmmVGeev7UP95o1HSJTUoIS2xV4SsmZxvOoVf%2BAZaVoihB%2BT3bg&rqlang=cn&rsv_ers=xn0&rs_src=0&rsv_pq=88c7804a0000c417&rsv_t=b5f3JkJIsj6Nkp61K%2BmmVGeev7UP95o1HSJTUoIS2xV4SsmZxvOoVf%2BAZaVoihB%2BT3bg">知了殼公司註冊</a></th></tr></tbody></table></p>
二、抓取並儲存本地
原始碼
index.php------------<form action="index.php" method="post"><input name="q" type="text" /><input type="submit" value="Get Keywords" /></form><?phpheader('Content-Type:text/html;charset=gbk');class ComBaike{ private $o_String=NULL; public function __construct(){ include('cls.StringEx.php'); $this->o_String=new StringEx(); } public function getItem($word){ $url = "http://www.baidu.com/s?wd=".$word; // 構造包頭,類比瀏覽器請求 $header = array ( "Host:www.baidu.com", "Content-Type:application/x-www-form-urlencoded",//post請求 "Connection: keep-alive", 'Referer:http://www.baidu.com', 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; BIDUBrowser 2.6)' ); $ch = curl_init (); curl_setopt ( $ch, CURLOPT_URL, $url ); curl_setopt ( $ch, CURLOPT_HTTPHEADER, $header ); curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 ); $content = curl_exec ( $ch ); if ($content == FALSE) { echo "error:" . curl_error ( $ch ); } curl_close ( $ch ); //輸出結果echo $content; $this->o_String->string=$content; $s_begin='<p id="rs">'; $s_end='</p>'; $summary=$this->o_String->getPart($s_begin,$s_end); $s_begin='<p class="tt">相關搜尋</p><table cellpadding="0"><tr><th>'; $s_end='</th></tr></table></p>'; $content=$this->o_String->getPart($s_begin,$s_end); return $content; } public function __destruct(){ unset($this->o_String); }}if($_POST){ $com = new ComBaike(); $q = $_POST['q']; $str = $com->getItem($q); //擷取搜尋內容 $pat = '/<a(.*?)href="(.*?)"(.*?)>(.*?)<\/a>/i'; preg_match_all($pat, $str, $m); //print_r($m[4]); 連結文字 $con = implode(",", $m[4]); //組建檔案夾 $dates = date("Ymd"); $path="./Search/".$dates."/"; if(!is_dir($path)){ mkdir($path,0777,true); } //組建檔案 $file = fopen($path.iconv("UTF-8","GBK",$q).".txt",'w'); if(fwrite($file,$con)){ echo $con; echo '<script>alert("success")</script>'; }else{ echo '<script>alert("error")</script>'; } fclose($file);}?>cls.StringEx.php-------------<?phpheader('Content-Type: text/html; charset=UTF-8');class StringEx{ public $string=''; public function __construct($string=''){ $this->string=$string; } public function pregGetPart($s_begin,$s_end){ $s_begin==preg_quote($s_begin); $s_begin=str_replace('/','\/',$s_begin); $s_end=preg_quote($s_end); $s_end=str_replace('/','\/',$s_end); $pattern='/'.$s_begin.'(.*?)'.$s_end.'/'; $result=preg_match($pattern,$this->string,$a_match); if(!$result){ return $result; }else{ return isset($a_match[1])?$a_match[1]:''; } } public function strstrGetPart($s_begin,$s_end){ $string=strstr($this->string,$s_begin); $string=strstr($string,$s_end,true); $string=str_replace($s_begin,'',$string); $string=str_replace($s_end,'',$string); return $string; } public function getPart($s_begin,$s_end){ $result=$this->pregGetPart($s_begin,$s_end); if(!$result){ $result=$this->strstrGetPart($s_begin,$s_end); } return $result; }}?>