>  기사  >  백엔드 개발  >  PHP는 Baidu 검색 결과 페이지에서 [관련 검색어]를 가져와 저장합니다.

PHP는 Baidu 검색 결과 페이지에서 [관련 검색어]를 가져와 저장합니다.

不言
不言원래의
2018-04-27 09:32:473524검색

이 글의 내용은 Baidu 검색결과 페이지의 [관련 검색어]를 크롤링하고 저장하는 내용입니다. 이제 필요한 친구들이 참고할 수 있도록 공유하겠습니다. 바이두 검색어 [시치쉘 회사 이전]

[시치드 쉘 회사 이전] 검색 링크PHP는 Baidu 검색 결과 페이지에서 [관련 검색어]를 가져와 저장합니다.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>

PHP는 Baidu 검색 결과 페이지에서 [관련 검색어]를 가져와 저장합니다.


2. 로컬을 잡아서 저장

PHP는 Baidu 검색 결과 페이지에서 [관련 검색어]를 가져와 저장합니다.소스 코드

index.php------------

<form action="index.php" method="post">
<input name="q" type="text" />
<input type="submit" value="Get Keywords" />
</form>

<?php
header(&#39;Content-Type:text/html;charset=gbk&#39;);
class ComBaike{
    private $o_String=NULL;
    public function __construct(){
        include(&#39;cls.StringEx.php&#39;);
        $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",
            &#39;Referer:http://www.baidu.com&#39;,
            &#39;User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; BIDUBrowser 2.6)&#39;
        );
        $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=&#39;<p id="rs">&#39;;
        $s_end=&#39;</p>&#39;;
        $summary=$this->o_String->getPart($s_begin,$s_end);
        $s_begin=&#39;<p class="tt">相关搜索</p><table cellpadding="0"><tr><th>&#39;;
        $s_end=&#39;</th></tr></table></p>&#39;;
        $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[&#39;q&#39;];
    $str = $com->getItem($q); //获取搜索内容
    $pat = &#39;/<a(.*?)href="(.*?)"(.*?)>(.*?)<\/a>/i&#39;;     
    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",&#39;w&#39;);
    if(fwrite($file,$con)){
        echo $con;
        echo &#39;<script>alert("success")</script>&#39;;
    }else{
        echo &#39;<script>alert("error")</script>&#39;;
    }
    fclose($file);

}

?>

cls.StringEx.php-------------

<?php
header(&#39;Content-Type: text/html; charset=UTF-8&#39;);
class StringEx{
    public $string=&#39;&#39;;
    public function __construct($string=&#39;&#39;){
        $this->string=$string;
    }
    public function pregGetPart($s_begin,$s_end){
        $s_begin==preg_quote($s_begin);
        $s_begin=str_replace(&#39;/&#39;,&#39;\/&#39;,$s_begin);
        $s_end=preg_quote($s_end);
        $s_end=str_replace(&#39;/&#39;,&#39;\/&#39;,$s_end);
        $pattern=&#39;/&#39;.$s_begin.&#39;(.*?)&#39;.$s_end.&#39;/&#39;;
        $result=preg_match($pattern,$this->string,$a_match);
        if(!$result){
            return $result;
        }else{
            return isset($a_match[1])?$a_match[1]:&#39;&#39;;
        }
    }
    public function strstrGetPart($s_begin,$s_end){
        $string=strstr($this->string,$s_begin);
        $string=strstr($string,$s_end,true);
        $string=str_replace($s_begin,&#39;&#39;,$string);
        $string=str_replace($s_end,&#39;&#39;,$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;
    }
}
?>
관련 권장 사항:

php 크롤링 페이지 왜곡 분석

php 크롤링 웹 페이지 일치 콘텐츠 템플릿


위 내용은 PHP는 Baidu 검색 결과 페이지에서 [관련 검색어]를 가져와 저장합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.