Goutte에서 공항 정보 얻기

8227 단어 GouttePHP스크래핑

소개



친구와의 작품 제작으로 공항 정보를 원했을 때 스크래핑 해 보려고 생각합니다.

아래 사이트가 많은 정보가 실려 있었기 때문에 스크래핑하려고 생각했습니다.
htps //w w. 아이 r 네구이에서. jp/아이 r포 rt-코로 s/

PHP나 Laravel은 초보자로 여러분의 기사를 참고로 했습니다

Laravel/Goutte로 영화 제목 크롤링

Goutte (PHP)로 스크래핑 해보십시오.

이용하는 것으로는 친구가 Laravel을 사용하고 있었기 때문에 그것에 맞추었습니다

※스크래핑에 대해서는 여러가지라고 생각하므로 자기 책임으로 부탁합니다.

라라벨 버전은 5.5.45

스크래핑이란?



스크래핑은 서버 측 프로그래밍 언어를 사용하여 외부 서버에 액세스하고 그 내용에서 자신이 원하는 정보를 끌어내는 기법입니다. 대부분은 HTML을 반환하는 데 사용되며 DOM을 구문 분석하거나 정규식을 사용하여 데이터를 추출합니다.
인용( 스크래핑과 API의 차이 )

취득한 정보


  • 공항 코드
  • 공항명

  • 세 가지 정보를 원하므로 사이트를 살펴 보겠습니다.



    이미지의 테이블 태그로 둘러싸인
    - 첫 번째 공항 코드
    - 3번째 공항명 OR 3번째 항목이 비어 있다면 4번째 항목을 취하려고 합니다

    controller



    AirMacController.php
    
    namespace App\Http\Controllers;
    
    use Illuminate\Http\Request;
    use Goutte;
    use Illuminate\Support\Facades\DB;
    
    class AirPortController extends Controller
    {
        //
        public function index(){
            $url = 'https://www.airlineguide.jp/airport-codes/';
    
            $airCode = array();
            $count = 0;
    
            $crawler = Goutte::request('GET', $url);
            $crawler->filter('table tr')->each(function($node) use(&$airCode,&$count) {
    
                if(count($node->filter('td'))){
                    //空港コード
                    $airCode[$count]['code'] = $node->filter('td')->eq(0)->text();
                    //空港名
                    if($node->filter('td')->eq(2)->text() === ''){
                        $airCode[$count]['airPort'] = $node->filter('td')->eq(3)->text();
                    }else{
                        $airCode[$count]['airPort'] = $node->filter('td')->eq(2)->text();
                    }
                    $count++;
                }
    
            });
    
            //DBに空港情報登録
            foreach ($airCode as  $value){
                DB::table('airports')->insert(['airport_code' => $value['code'],
                    'airport_name'=> $value['airPort']]);
            }
    
        }
    }
    

    라우팅



    web.php
    Route::get('/search','AirPortController@index');
    

    결과



    안전
  • 공항 코드
  • 공항명

  • 얻을 수 있습니다.

    하나의 빈 항목이 있는 것은 나중에 API나 국가 코드를 삽입하기 때문입니다

    좋은 웹페이지 즐겨찾기