koreantech.org Meta Scraping API를 사용하여 웹사이트 메타 데이터를 추출하는 방법

일반적으로 웹 스크래핑은 웹 페이지가 로드될 때 생성되는 HTML에서 웹 사이트의 데이터를 추출하는 것입니다.

메타스크래핑은 웹페이지의 메타 태그에서 웹페이지의 메타데이터를 추출하는 것입니다.

웹 페이지의 메타데이터는 페이지에 대한 정보이지만 페이지의 콘텐츠는 아닙니다. 예를 들어 메타데이터에는 작성자 이름, 제목 및 웹 페이지 설명이 포함될 수 있습니다.

사용자와 검색 엔진이 페이지의 내용을 이해하는 데 도움이 됩니다. 메타데이터를 스크래핑하면 사용자가 웹 페이지에 대한 정보를 더 짧은 시간에 빠르게 수집할 수 있습니다.

수동 스크래핑, 라이브러리 사용 또는 koreantech.org Metascraping API와 같은 API 사용을 포함하여 메타데이터용 웹페이지를 스크랩하는 데 여러 접근 방식을 사용할 수 있습니다.

고양이를 죽이는 다양한 방법

수동으로 스크랩하려면 Chrome DevTools를 사용하여 웹페이지를 열고 요소 탭에서 메타데이터를 추출할 수 있습니다. 그러나 이 설명서는 여러 페이지를 다룰 때 반복적이고 지루합니다. 여러 접근 방식을 사용하여 작업을 자동화할 수 있습니다.

첫 번째 방법은 처음부터 코드를 작성하는 것입니다. 이 접근 방식에서는 메타데이터를 추출하려는 웹사이트에 HTTP 요청을 합니다. 그런 다음 정규식 또는 패턴 일치를 사용하여 메타 태그에서 데이터를 추출하는 응답 HTML을 구문 분석할 수 있습니다. 그러나 이 접근 방식은 기존 코드를 다시 작성하는 데 시간을 소비하므로 바퀴를 재발명합니다.

두 번째 접근 방식은 원하는 프로그래밍 언어로 라이브러리를 사용하는 것입니다. 이를 통해 구현 세부 사항을 추상화하고 작업을 단순하게 유지할 수 있습니다. 그러나 선택한 프로그래밍 언어에 적합한 라이브러리가 없거나 사용 중인 특정 런타임이 라이브러리를 지원하지 않는 경우 사용할 수 없습니다.

세 번째 접근 방식은 koreantech.org Metascraping API와 같은 API를 사용하는 것입니다. 이 접근 방식은 프로그래밍 언어에 관계없이 일관된 인터페이스를 제공하기 때문에 이상적입니다. HTTP 요청을 지원하는 한 모든 언어에서 사용할 수 있습니다.

이 문서에서는 cURL, PHP 및 JavaScript(NodeJS)와 함께 koreantech.org Metascraping API를 사용하는 방법을 보여줍니다.

다른 접근 방식의 단점 때문에 koreantech.org API를 사용하면 다음과 같은 이점이 있습니다.

  • 언어 및 런타임 환경에 구애받지 않습니다.
  • 바퀴를 재발명하지 않고 코드 작성에 소요되는 시간을 줄입니다.
  • 여러 웹사이트를 효율적으로 스크랩할 수 있습니다(몇 초 만에).
  • 사용하기 매우 쉽습니다.
  • 무료로 사용할 수 있습니다.

koreantech.org API를 사용하여 시작하기

koreantech.org API를 사용하려면 API 키가 필요합니다. 계정을 얻으려면 koreantech.org 웹사이트로 이동하여 무료 계정을 만드십시오. 계정을 만든 후 대시보드에 로그인합니다. 대시보드에서 API 키를 볼 수 있어야 합니다.

  OLED 화면 번인: 얼마나 걱정해야 합니까?

API 끝점은 https://api.koreantech.org.com/metascraping에 있습니다. 요청을 할 때 이름이 x-api-key이고 값이 API 키인 요청 헤더로 API 키를 제공해야 합니다.

또한 요청 본문에 추가 매개변수를 전달해야 합니다. URL, 장치 및 프록시 국가입니다.

  • URL은 스크랩하려는 메타데이터가 있는 웹페이지의 URL을 지정합니다.
  • 장치는 메타데이터를 스크랩할 때 사이트를 방문하는 데 사용되는 장치를 지정합니다. 장치 옵션은 모바일 또는 데스크톱입니다.
  • 프록시 국가는 데이터를 스크랩하기 전에 요청해야 하는 국가를 지정합니다. 그러나 프록시 국가는 프리미엄 기능이며 koreantech.org 유료 요금제에서만 사용할 수 있습니다.

매개변수가 본문의 일부로 전달되는 경우 GET 요청에는 메타데이터가 포함될 수 없으므로 요청은 POST 요청이어야 합니다.

첫 번째 데모에서는 명령줄에서 cURL 유틸리티를 사용하여 Metascraping API를 요청합니다. cURL을 사용하려면 먼저 설치해야 합니다.

Bash 터미널을 사용할 예정입니다. 이것은 macOS 및 Linux의 기본 터미널이어야 합니다. Windows의 경우 Git Bash를 설치해야 합니다.

cURL이 설치된 후 cURL 명령을 사용하여 요청할 수 있습니다. 명령에 옵션을 전달하여 요청 매개변수(요청 메서드, 엔드포인트, 요청 본문 및 요청 헤더)를 지정합니다.

curl -X POST 
https://api.koreantech.org.com/metascraping  
-d '{ "url": "https://tesla.com" }' 
-H 'Content-Type: application/json' 
-H 'x-api-key: <API_KEY>'

NB: 처음 세 줄 뒤의 백슬래시를 사용하면 명령 입력을 여러 줄로 나눌 수 있습니다.

이 명령은 HTTP 메서드를 POST로 지정하고 끝점을 koreantech.org API 메타 스크래핑 끝점으로 지정했습니다.

또한 URL 속성이 https://tesla.com으로 지정된 JSON 개체로 요청 본문을 보냈습니다. 마지막으로 본문 콘텐츠 유형을 JSON으로 지정하는 헤더를 추가하고 x-api-key 헤더를 사용하여 API 키를 제공했습니다.

이 명령을 실행하면 다음과 같은 결과가 나타납니다.

{"timestamp":1669328564856,"apiStatus":"success","apiCode":200,"meta":{"url":"https://tesla.com","device":"desktop","test":{"id":"1fh2c30i05vmvxb99pdh6t6hze2x72jv"}},"data":{"author":null,"date":null,"description":"Tesla is accelerating the world’s transition to sustainable energy with electric cars, solar and integrated renewable energy solutions for homes and businesses.","image":"https://tesla-cdn.thron.com/delivery/public/image/tesla/6139697c-9d6a-4579-837e-a9fc5df4a773/bvlatuR/std/1200x628/Model-3-Homepage-Social-LHD","logo":"https://tesla.com/themes/custom/tesla_frontend/assets/favicons/favicon-196x196.png","publisher":"Tesla","title":"Electric Cars, Solar & Clean Energy | Tesla","url":"https://www.tesla.com/","lang":"en"}}

그것이 올바른 출력입니다.

이 프로젝트에서는 API에서 데이터를 가져오는 NodeJS 스크립트를 만듭니다. 즉, NodeJS가 설치되어 있어야 합니다. 프로젝트의 종속성을 관리하려면 Node용 NPM 또는 다른 패키지 관리자도 필요합니다. 또한 Bash 터미널을 사용하여 명령을 실행할 것입니다.

JavaScript에서 API를 사용하려면 먼저 빈 프로젝트 폴더를 만들고 터미널에서 엽니다.

mkdir metascraping-js && cd metascraping-js

그런 다음 스크립트를 작성할 파일을 만들 수 있습니다.

touch index.js

그런 다음 프로젝트를 노드 프로젝트로 인스턴스화할 수 있습니다.

npm init -y

파일 내에서 ESModule 구문을 사용하려면 다음과 같이 package.json 파일의 루트에 “type” : “module” 줄을 추가합니다.

{
  "name": "metascraping",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "type": "module",
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
}

다음으로 node-fetch 패키지를 설치합니다. 이 패키지는 NodeJS에서 브라우저의 가져오기 기능과 유사한 가져오기 기능을 제공합니다. 이렇게 하면 내장된 http 모듈을 사용하여 요청하는 것보다 NodeJS에서 HTTP 요청을 더 쉽게 만들 수 있습니다.

npm install node-fetch

패키지가 올바르게 설치되면 스크립트 편집을 시작할 수 있습니다. 선택한 텍스트 편집기를 사용하여 index.js 파일을 엽니다. 제 경우에는 터미널 기반의 나노 텍스트 편집기를 사용할 것입니다.

nano index.js

index.js 파일을 편집하면서 node-fetch 모듈의 기본 내보내기 기능인 가져오기 기능을 가져오기 시작합니다.

import fetch from 'node-fetch'

그런 다음 요청 본문을 정의합니다. 이것은 url 속성이 있는 JSON 문자열이 됩니다. url 속성의 값은 메타데이터를 가져오려는 웹페이지입니다.

const body = JSON.stringify({ url: 'https://spacex.com' });

다음으로 우리는 결국 호출할 때 가져오기 함수에 전달할 요청 옵션을 정의할 수 있습니다.

const options = {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'x-api-key': <YOUR API KEY here>
    },
    body: body
}

요청 방법을 POST 요청으로 정의했습니다. 또한 두 개의 헤더를 정의했습니다. 하나는 본문에 JSON 데이터가 포함되도록 지정하고 다른 하나는 API 키를 제공합니다.

  Word에서 로마 숫자를 쓰는 방법

를 실제 API 키로 바꿀 수 있습니다. 실제로 API 키는 파일에 하드코딩하면 안 되며 환경 변수를 사용하여 로드해야 합니다. 마지막으로 앞에서 정의한 body 상수의 값으로 body 속성을 지정했습니다.

마지막으로 가져오기를 호출합니다.

fetch('https://api.koreantech.org.com/metascraping', options)
    .then(response => response.json())
    .then(json => console.log(json))

여기에서 가져오기 함수를 호출하여 API 엔드포인트와 이전에 정의한 옵션을 전달했습니다. 가져오기는 약속을 반환하므로 then을 사용하여 JSON 응답을 구문 분석하는 콜백을 첨부했습니다.

콜백은 또 다른 약속을 반환하고 확인되면 반환된 객체를 console.log()로 이동합니다.

따라서 궁극적으로 파일은 다음과 같아야 합니다.

import fetch from 'node-fetch'

const body = JSON.stringify({ url: 'https://spacex.com' });

const options = {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'x-api-key': <YOUR API KEY here>
    },
    body: body
}

fetch('https://api.koreantech.org.com/metascraping', options)
    .then(response => response.json())
    .then(json => console.log(json))

스크립트를 실행하려면 편집 내용을 저장하고 사용 중인 nano 또는 텍스트 편집기를 닫은 후 다음 명령을 입력합니다.

node .

다음 메타데이터를 가져와야 합니다.

{
  timestamp: 1669305079698,
  apiStatus: 'success',
  apiCode: 200,
  meta: {
    url: 'https://spacex.com',
    device: 'desktop',
    test: { id: '8m3srgqw06q2k8li5p6x70s8165d6e2f' }
  },
  data: {
    author: null,
    date: null,
    description: 'SpaceX designs, manufactures and launches advanced rockets and spacecraft.',
    image: 'https://www.spacex.com/static/images/share.jpg',
    logo: 'https://spacex.com/static/images/favicon.ico',
    publisher: 'SpaceX',
    title: 'SpaceX',
    url: 'http://www.spacex.com/',
    lang: 'en'
  }
}

PHP와 함께 koreantech.org API 사용

koreantech.org Metascraping API를 사용하려면 먼저 로컬 시스템에 PHP와 Composer가 설치되어 있는지 확인하십시오.

시작하려면 프로젝트 폴더를 만들고 엽니다.

mkdir metascraping-php && cd metascraping-php

다음으로 GuzzleHTTP를 설치합니다. Guzzle은 koreantech.org API와 함께 사용할 수 있는 많은 PHP 클라이언트 중 하나입니다.

composer require guzzlehttp/guzzle

Guzzle이 설치되면 다음을 사용하여 스크립트를 만들 수 있습니다.

touch script.php

그런 다음 코드 작성을 시작할 수 있습니다. 선택한 텍스트 편집기를 사용하여 script.php 파일을 엽니다. 제 경우에는 터미널 기반의 텍스트 편집기인 nano를 사용하려고 합니다.

nano script.php

스크립트 내부에 상용구 PHP를 삽입합니다.

<?php
    // All code goes here
?>

이제 확장을 로드하려면 Guzzle에서 요청 및 클라이언트 클래스를 가져오십시오. 이 코드는 이전에 작성한 사이에 작성해야 합니다.

require_once('vendor/autoload.php');

use GuzzleHttpClient;
use GuzzleHttpPsr7Request;

다음으로 GuzzleHttpClient 클래스를 인스턴스화하여 클라이언트를 생성할 수 있습니다.

$client = new GuzzleHttpClient();

그런 다음 요청에 대한 헤더를 정의할 수 있습니다. 이 특정 요청에 대해 두 개의 헤더를 제공합니다. 하나는 본문의 콘텐츠 유형이 JSON임을 지정하고 다른 하나는 API 키를 포함합니다.

$headers = [
    'x-api-key' => <YOUR API KEY HERE>,
    'Content-Type' => 'application/json'
];

를 koreantech.org API 대시보드의 실제 API 키로 바꿉니다.

  Linux에서 Max Payne의 몰락

그런 다음 본체를 정의할 수 있습니다. 이 경우 본문은 url 속성이 “https://twitter.com”으로 설정된 JSON 문자열이 됩니다.

$body = json_encode([
    "url" => "https://twitter.com"
]);

요청을 생성하기 위해 이전에 가져온 요청 클래스를 인스턴스화하여 요청 메서드, 엔드포인트, 헤더 및 요청 본문을 전달합니다.

$request = new Request('POST', 'https://api.koreantech.org.com/metascraping', $headers, $body);

다음으로 클라이언트를 사용하여 요청을 보냅니다.

$response = $client->sendAsync($request)->wait();

그런 다음 요청 본문을 추출하여 콘솔에 인쇄할 수 있습니다.

echo $response->getBody();

코드를 올바르게 복사했다면 script.php 파일은 다음과 같아야 합니다.

<?php
    require_once('vendor/autoload.php');

	use GuzzleHttpClient;
	use GuzzleHttpPsr7Request;

	$client = new GuzzleHttpClient();

	$headers = [
    	'x-api-key' => <YOUR API KEY>,
    	'Content-Type' => 'application/json'
	];

	$body = json_encode([
    	"url" => "https://twitter.com"
	]);

	$request = new Request('POST', 'https://api.koreantech.org.com/metascraping', $headers, $body);

	$response = $client->sendAsync($request)->wait();

	echo $response->getBody();
?>

스크립트를 저장하고 닫은 다음 다음을 사용하여 실행하십시오.

php script.php

다음과 같은 결과가 표시되어야 합니다.

{
    "timestamp":1669322100912,
    "apiStatus":"success",
    "apiCode":200,
    "meta": {
        "url":"https://twitter.com",
        "device":"desktop",
        "test":{ 
            "id":"wn1nj30r04bk0ijtpprwdqmtuirg9lze"
        }
     },
     "data":{ 
         "author":null,
         "date":null,
         "description":"The latest stories on Twitter - as told by Tweets.",
         "image":"https://abs.twimg.com/a/1602199131/img/moments/moments-card.jpg",
         "logo":"https://abs.twimg.com/responsive-web/client-web/icon-ios.b1fc7279.png",
         "publisher":"Twitter",
         "title":"Explore",
         "url":"https://twitter.com/explore",
         "lang":"en"
     }
}

마지막 말

이 가이드에서는 koreantech.org Metascraping API를 사용하는 다양한 방법을 살펴보았습니다.

Metascraping API를 사용하면 URL보다 더 많은 매개변수를 제공할 수도 있습니다. 이러한 매개변수 중 하나는 koreantech.org API 프리미엄 계획으로만 액세스할 수 있는 프록시 매개변수입니다. 그럼에도 불구하고 koreantech.org API는 많은 용도에 사용할 수 있을 만큼 강력합니다.

자세한 내용은 koreantech.org API의 공식 문서를 확인하십시오.