PHP 爬蟲

昨天面試萌寶的php實(shí)習(xí)言询,給了我一個(gè)爬蟲的題目尔觉,瞬間懵逼凉袱,我的天,從來沒接觸過爬蟲啊侦铜。于是簡單的了解了下专甩,決定用html-parse來解析html_dom,因?yàn)檎嫘膶?duì)正則表達(dá)式感到害怕钉稍。
然而最后還是被pass了涤躲,說小公司,我的能力達(dá)不到...建議我去大公司嫁盲。篓叶。烈掠。果然還是大公司比較好進(jìn)是吧羞秤?


    public function start(){
      //獲取鏈接數(shù)組
      $this->setLinksArray();
      $movies = [];
      foreach($this->linksArray as $link){
                $html_dom = $this->getContentByFilegetContent($link);
              // 找出items
              $ol = $html_dom->find('ol.grid_view',0);
              $items = $ol->find('li');
              // 獲取基礎(chǔ)信息
              foreach ($items as $item){
                  $em = $item->find('em',0)->getPlainText();
                  $title = $item->find('span.title',0)->getPlainText();
                  $img = $item->find('img',0)->getAttr('src');
                  $inq = $item->find('span.inq',0);
                  if($inq == false){
                    $inq = '';
                  }else{
                    $inq=$inq->getPlainText();
                  }
                  $rating_num = $item->find('span.rating_num',0)->getPlainText();
                  $ob = [$em => [
                    'title'=>$title,
                    'img'=>$img,
                    'inq'=>$inq,
                    'rateing_num'=>$rating_num
                  ]];
                  array_push($movies,$ob);
                  // 獲取更多信息
                  // $moreUrl = $item->find('div.hd',0)->find('a',0)->getAttr('href');
                  // if($this->isUrlValid($moreUrl)){
                  //   echo $moreUrl;
                  //     $moreInfo_dom = $this->getContentByFilegetContent($item->find('div.hd',0)->find('a',0)->getAttr('href'));
                  //     $info_dom = $moreInfo_dom->find('info',0);
                  //     $director = $info_dom->find('span',0)->find('a',0)->getPlainText();
                  //     $bianju = $info_dom->find('span',1)->find('a',0)->getPlainText();
                  //     // 獲取moreInfo(導(dǎo)演,主演左敌,編勸啊) 測試階段被墻了
                  // }
              }
      }
      //將json寫入文件
      file_put_contents("/Users/z/Code/test.txt",json_encode($movies));
    }
    // 設(shè)置linksArray
    public function setLinksArray(){
      $html_dom = $this->getContentByFilegetContent(self:::URL);
      //找出翻頁div
      $div_paginator =  $html_dom->find('div.paginator',0);
      $linksuffixs = $div_paginator->find('a');
      //250條數(shù)據(jù)的鏈接數(shù)組
      $this->linksArray = array_map(function ($linksuffix){
          return self::URL.$linksuffix->getAttr('href');
      },$linksuffixs);

      array_pop($this->linksArray);
      array_unshift($this->linksArray,self::URL);
    }
    //根據(jù)url,獲取dom對(duì)象
    public function getContentByFilegetContent($url){
      $content = file_get_contents($url);
      $html_dom = new \HtmlParser\ParserDom($content);
      return $html_dom;
    }
    //curl 請求
    header("Content-type:text/html;charset=utf-8");
    function GetCurl($url){
        $ch = curl_init();
        curl_setopt($ch,CURLOPT_URL,$url);
        curl_setopt($ch, CURLOPT_HEADER, true);
        curl_setopt($ch, CURLOPT_NOBODY,true);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION,true);
        curl_setopt($ch, CURLOPT_AUTOREFERER,true);
        curl_setopt($ch, CURLOPT_TIMEOUT,30);
        $rtn = curl_exec($ch);
        curl_exec($ch);
        return $rtn;
    }// 判斷url是否有效
    public function isUrlValid($url){
        $resp = $this->GetCurl($url);
        if(strpos($resp,'404 Not Found')==true) {
          return false;
        }else{
          return true;
        }
    }


}
` ` `
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末矫限,一起剝皮案震驚了整個(gè)濱河市哺哼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌叼风,老刑警劉巖取董,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異无宿,居然都是意外死亡茵汰,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門孽鸡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蹂午,“玉大人,你說我怎么就攤上這事彬碱《剐兀” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵巷疼,是天一觀的道長晚胡。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么搬泥? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任桑寨,我火速辦了婚禮,結(jié)果婚禮上忿檩,老公的妹妹穿的比我還像新娘尉尾。我一直安慰自己,他們只是感情好燥透,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布沙咏。 她就那樣靜靜地躺著,像睡著了一般班套。 火紅的嫁衣襯著肌膚如雪肢藐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天吱韭,我揣著相機(jī)與錄音吆豹,去河邊找鬼。 笑死理盆,一個(gè)胖子當(dāng)著我的面吹牛痘煤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播猿规,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼衷快,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了姨俩?” 一聲冷哼從身側(cè)響起蘸拔,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎环葵,沒想到半個(gè)月后调窍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡张遭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年邓萨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片帝璧。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡先誉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出的烁,到底是詐尸還是另有隱情褐耳,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布渴庆,位于F島的核電站铃芦,受9級(jí)特大地震影響雅镊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜刃滓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一仁烹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧咧虎,春花似錦卓缰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至茁彭,卻和暖如春总寒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背理肺。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來泰國打工摄闸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人妹萨。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓年枕,卻偏偏與公主長得像,于是被迫代替她去往敵國和親眠副。 傳聞我的和親對(duì)象是個(gè)殘疾皇子画切,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355