Goutte에서 공항 정보 얻기
소개
친구와의 작품 제작으로 공항 정보를 원했을 때 스크래핑 해 보려고 생각합니다.
아래 사이트가 많은 정보가 실려 있었기 때문에 스크래핑하려고 생각했습니다.
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나 국가 코드를 삽입하기 때문입니다
Reference
이 문제에 관하여(Goutte에서 공항 정보 얻기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tono_tech/items/ed0f761d20dc74cca5e7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)