목차
1. 동적 웹 데이터 크롤링의 도전
2. 솔루션 : V8 패키지로 JavaScript를 실행하십시오
3. 실제 사례 : FATF 웹 사이트의 국가 데이터 크롤링
3.1 데이터 소스를 식별하십시오
3.2 구현 단계 및 코드 예제
3.3 코드 설명
4. 예방 조치 및 요약
웹 프론트엔드 HTML 튜토리얼 Advanced R Language Crawling : JavaScript에 의해 동적으로로드 된 데이터 처리

Advanced R Language Crawling : JavaScript에 의해 동적으로로드 된 데이터 처리

Aug 08, 2025 pm 08:51 PM

r 언어 고급 웹 크롤링 : JavaScript에 의해 동적으로로드 된 데이터 처리

이 기사는 r 언어를 사용하여 JavaScript를 통해 동적으로로드되는 웹 페이지 데이터를 처리하는 방법을 가르치는 것을 목표로합니다. XML 또는 RVEST와 같은 기존 웹 크롤러가 그러한 데이터를 직접 얻을 수 없다는 과제에 따라이 기사는 V8 패키지를 사용하여 JavaScript 실행 환경을 시뮬레이션하여 JavaScript 파일에서 직접 필요한 데이터를 추출하는 방법을 자세히 소개합니다. 특정 사례를 통해 데이터 소스를 식별하고 JavaScript 컨텐츠를 얻고 R 환경에서 JavaScript 코드를 실행하며 추출 된 데이터를 청소하고 구성하여 동적으로 생성 된 웹 페이지 정보를 효율적이고 정확하게 얻는 방법을 보여줍니다.

1. 동적 웹 데이터 크롤링의 도전

웹 데이터 스크래핑 (웹 스크래핑)에서는 종종 데이터가 HTML 구조에 직접 내장되어 있지 않지만 JavaScript를 통해 동적으로 생성되는 상황에 직면합니다. XML 또는 RVEST와 같은 기존 R 패키지는 주로 정적 HTML 컨텐츠를 구문 분석하는 데 의존합니다. 대상 데이터가 JavaScript (AJAX)에 의해 요청되거나 JavaScript 변수에 직접 포함 된 경우, 이러한 도구는 종종 필요한 정보를 직접 얻지 못합니다.

xml :: htmlparse를 사용하려는 예비 시도로서 https://www.fatf-gafi.org/countries/ 웹 사이트에서 국가 목록을 크롤링하는 예를 취하면 예상되는 국가 데이터를 얻지 못할 수 있습니다. 이러한 데이터는 표준 HTML 테이블 ()의 형태에 존재하지 않기 때문에

2. 솔루션 : V8 패키지로 JavaScript를 실행하십시오

R 언어의 V8 패키지는 내장 된 JavaScript 및 WebAssembly 엔진을 제공하여 R 환경에서 JavaScript 코드를 실행하고 JavaScript 런타임 환경과 상호 작용할 수 있습니다. 즉, 웹 페이지에 사용 된 JavaScript 파일을로드하고 내부의 코드를 실행 한 다음 JavaScript로 정의 된 변수 값을 추출 할 수 있습니다.

핵심 아이디어 :

  1. JavaScript 데이터 소스 식별 : 브라우저 개발자 도구 (네트워크/네트워크 탭)를 통해 웹 페이지로드, 특히 .js 파일 중에 요청 된 리소스를 확인하고 대상 데이터를 포함 할 수있는 JavaScript 파일을 찾으십시오.
  2. JavaScript 컨텐츠 가져 오기 : HTTR 패키지를 사용하여 JavaScript 파일의 내용을 다운로드하십시오.
  3. V8 엔진 초기화 : V8 컨텍스트를 만듭니다.
  4. JavaScript 코드 실행 : V8 컨텍스트에서 다운로드 된 JavaScript 컨텐츠를 실행하십시오.
  5. 변수 추출 : V8 컨텍스트에서 JavaScript 변수의 값을 얻습니다.
  6. 데이터 정리 : 추출 된 데이터의 필요한 형식 변환 및 청소를 수행합니다.

3. 실제 사례 : FATF 웹 사이트의 국가 데이터 크롤링

우리는 FATF (Financial Action Task Force) 웹 사이트를 사용하여 국가 목록을 크롤링하는 방법을 보여줍니다.

3.1 데이터 소스를 식별하십시오

https://www.fatf-gafi.org/countries/를 방문하고 "네트워크"또는 "네트워크"탭에서 브라우저 개발자 도구를 열면 Country-Data-Multi-lang.js라는 JavaScript 파일이 페이지 로딩 프로세스 중에 요청 될 수 있습니다. 이 파일에는 필요한 모든 국가 데이터가 포함되어 있으며 국가라는 JavaScript 배열 변수에 존재한다는 것이 입증되었습니다.

JavaScript 파일의 전체 URL은 일반적으로 https://www.fatf-gafi.org/media/fatf/fatfv20/js/country-data-multi-lang.js입니다.

3.2 구현 단계 및 코드 예제

먼저 필요한 R 패키지를 설치했는지 확인하십시오 : httr, v8, dplyr 및 tidyr.

 # 필요한 라이브러리 라이브러리 (HTTR) # http 요청 라이브러리 (v8)를 보내는 데 사용
라이브러리 (dplyr) # 데이터 운영 라이브러리 (tidyr) # 데이터 정렬 용, 특히 불안한 기능 # 1. JavaScript 데이터 파일의 URL 정의
js_url  %
  Unnest (cols = c (그룹)) %> % # 중첩 된 '그룹'열 선택 (C (1 : 2, 4:14, 16)) % # % # 국가 이름, 코드 및 관련 조직 정보 필터 (! is.na (name)) # 최종 데이터 구조와 첫 몇 개의 선 인쇄를 필터링하는 구체적인 열을 포함하는 특정 열을 선택하십시오.
# str (final_country_data) # 데이터 구조보기

3.3 코드 설명

  • http :: get () 및 content () : http get requests를 시작하고 응답 내용을 얻는 데 사용됩니다. '텍스트'매개 변수는 컨텐츠가 문자열로 구문 분석되도록합니다.
  • V8 () : 독립형 JavaScript 실행 환경을 제공하는 V8 엔진 인스턴스를 생성합니다.
  • CT $ EVAL (JS_CONTENT) : 이것이 핵심 단계입니다. V8 엔진의 웹 사이트에서 다운로드 한 JavaScript 코드를 실행합니다. 실행 후,이 JavaScript 코드 (예 :이 경우 국가)에 정의 된 모든 글로벌 변수는 R에서 액세스 할 수 있습니다.
  • CT $ get ( "국가") : V8 엔진에서 국가 명명 된 JavaScript 변수의 값을 추출하십시오. V8 패키지는 R (일반적으로 목록 또는 데이터 프레임)의 해당 데이터 구조로 자동 변환됩니다.
  • Unnest (cols = c (groups)) : CT $ get ( "국가")에 의해 반환 된 데이터 프레임에는 그룹 이름이있는 열이 있으며 내부에는 중첩 된 목록 또는 데이터 프레임이 있습니다. Unnest () 함수 (Tidyr 패키지에서)는 이러한 중첩 구조를 평평한 열로 확장하는 데 사용되므로 데이터를보다 쉽게 분석 할 수 있습니다.
  • 선택 (C (1 : 2, 4:14, 16)) : Unnest 작업 후에는 데이터 프레임에 재배치 해야하는 중복 열 또는 열이 포함될 수 있습니다. 여기서는 열 인덱스별로 필요한 열을 선택합니다. 실제 애플리케이션에서는 이름 (Final_Country_Data)을 인쇄하거나 Glimpse ()를 사용하여 모든 열 이름을보고 이름으로 선택하여 코드의 가독성과 견고성을 향상시키는 것이 좋습니다.
  • 필터 (! is.na (name)) : 이름 열이 Na (value) 인 행을 필터 아웃합니다. 일부 데이터 소스에서는 끝에 빈 행이 채워질 수 있으며, 이런 식으로 지울 수 있습니다.

4. 예방 조치 및 요약

  • JavaScript 소스 포지셔닝 : 올바른 JavaScript 파일을 찾는 것이 중요합니다. 브라우저 개발자 도구 (특히 네트워크/네트워크 및 소스/소스 탭)를 사용하는 데있어 필수 기술입니다.
  • 데이터 구조 탐색 : V8에서 가져온 데이터는 복잡한 중첩 목록이 될 수 있습니다. str (), names (), glimpse () 및 기타 함수를 사용하여 구조를 탐색하여 데이터 정리가 unnest (), select () 및 기타 함수와 같은 함수에 의해 올바르게 사용되도록합니다.
  • 동적 컨텐츠 복잡성 : V8을 통해 모든 동적 컨텐츠를 직접 추출 할 수있는 것은 아닙니다. 복잡한 DOM 작업, 사용자 상호 작용 또는 암호화를 통해 데이터가로드되면 시뮬레이션을 위해서는 셀레늄 및 헤드리스 브라우저와 같은 고급 도구가 필요할 수 있습니다. 그러나 데이터가 JavaScript 변수에 직접 존재하는 경우 V8은 가볍고 효율적인 선택입니다.
  • 웹 사이트 정책 : 웹 크롤링 활동을 수행하기 전에 웹 사이트의 Robots.txt 파일 및 이용 약관을 확인하여 귀하의 행동이 웹 사이트의 규정을 준수하는지 확인하십시오.

이 기사의 연구를 통해 R Language V8 패키지를 사용하여 JavaScript 동적로드 데이터를 처리하는 기본 방법을 마스터 할 수 있어야합니다. 이 기술은 웹 페이지 데이터를 크롤링하는 R의 능력을 크게 확장하여보다 복잡한 최신 웹 구조에 대처할 수 있습니다.

위 내용은 Advanced R Language Crawling : JavaScript에 의해 동적으로로드 된 데이터 처리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

핫 AI 도구

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제

PHP 튜토리얼
1545
276
초보자를위한 필수 HTML 태그 초보자를위한 필수 HTML 태그 Jul 27, 2025 am 03:45 AM

HTML을 신속하게 시작하려면 웹 골격을 만들기 위해 몇 가지 기본 태그 만 마스터하면됩니다. 1. 페이지 구조는 필수적이며 루트 요소 인 메타 정보를 포함하며 컨텐츠 디스플레이 영역입니다. 2. 제목을 사용하십시오. 레벨이 높을수록 숫자가 작습니다. 레벨을 건너 뛰지 않도록 태그를 사용하여 텍스트를 분할하십시오. 3. 링크는 태그를 사용하고 HREF 속성과 일치하며 이미지는 태그를 사용하고 SRC 및 ALT 속성을 포함합니다. 4. 목록은 순서가없는 목록 및 주문 된 목록으로 나뉩니다. 각 항목은 표시되며 목록에 중첩되어야합니다. 5. 초보자는 모든 태그를 암기 할 필요가 없습니다. 글을 쓰는 동안 글을 쓰고 확인하는 것이 더 효율적입니다. 기본 웹 페이지를 만들기 위해 구조, 텍스트, 링크, 사진 및 목록을 마스터하십시오.

입력 태그의 이름 속성은 무엇입니까? 입력 태그의 이름 속성은 무엇입니까? Jul 27, 2025 am 04:14 AM

thenameattributeinanninputtagisusedtoifordite theOntify theOntify theOndeformissubmitted; itservessasekey-valuepairsentTotheserver, wheretheuser 's sinputisthevalue.1.whenaformissubmitted, whenaforted, thenameattributeBalueBecomesThevulueInThevalueInThevalueIntheAntheAnteAnteMOmesteAnteToTeServer

다른  태그 안에  태그를 넣을 수 있습니까? 다른 태그 안에 태그를 넣을 수 있습니까? Jul 27, 2025 am 04:15 AM

sinvalidhtml; browsersautomicallycloseThefirstbeOptenTenext, rentingInseparateParAgraphs.linlineElements, orforstylingwithinaparagraph, orforstylingwithinaparagraph, 또는 BlockContainers Orblockcontainers Orblockcontainers

Shadow Dom 개념 및 HTML 통합 Shadow Dom 개념 및 HTML 통합 Jul 24, 2025 am 01:39 AM

Shadowdom은 분리 된 DOM 하위 트리를 생성하기 위해 웹 구성 요소 기술에 사용되는 기술입니다. 1. 일반적인 HTML 요소에서 독립적 인 DOM 구조의 산을 자체 스타일과 동작으로 허용하며 기본 문서에 영향을 미치지 않습니다. 2. att 3. HTML과 함께 사용하면 세 가지 주요 기능이 있습니다. 명확한 구조, 스타일 격리 및 컨텐츠 투영 (슬롯); 4. 참고에는 복잡한 디버깅, 스타일 범위 제어, 성능 오버 헤드 및 프레임 워크 호환성 문제가 포함됩니다. 요컨대, Shadowdom은 재사용 가능 및 비 폴 루팅 UI 구성 요소를 구축하기위한 기본 캡슐화 기능을 제공합니다.

HTML`스타일 '태그 : 인라인 대 내부 CSS HTML`스타일 '태그 : 인라인 대 내부 CSS Jul 26, 2025 am 07:23 AM

스타일 배치 방법은 장면에 따라 선택해야합니다. 1. 인라인은 단일 요소 또는 동적 JS 제어의 임시 수정에 적합합니다. 2. 내부 CSS는 페이지가 적고 간단한 구조가있는 프로젝트에 적합하며, 이는 로그인 페이지의 기본 스타일 설정과 같은 스타일의 중앙 집중식 관리에 편리합니다. 3. 재사용, 유지 보수 및 성능에 우선 순위가 부여되며 대규모 프로젝트를 위해 외부 링크 CSS 파일을 분할하는 것이 좋습니다.

HTML에 PDF 문서를 포함시키는 방법은 무엇입니까? HTML에 PDF 문서를 포함시키는 방법은 무엇입니까? Aug 01, 2025 am 06:52 AM

태그를 사용하는 것이 가장 쉽고 권장되는 방법입니다. 구문은 최신 브라우저가 PDF를 직접 포함시키는 데 적합합니다. 2. 태그를 사용하면 더 나은 제어 및 백업 컨텐츠 지원을 제공 할 수 있으며 구문은 지원되지 않을 때 백업 솔루션으로 태그의 다운로드 링크를 제공 할 수 있습니다. 3. Google Docsviewer를 통해 내장 할 수 있지만 개인 정보 및 성능 문제로 인해 널리 사용하는 것이 좋습니다. 4. 사용자 경험을 향상시키기 위해서는 적절한 높이를 설정해야하며 응답 크기 (예 : 높이 : 80VH) 및 PDF 다운로드 링크를 제공하여 사용자가 스스로 다운로드하여 볼 수 있도록해야합니다.

html에서 변정되지 않은 목록을 만드는 방법은 무엇입니까? html에서 변정되지 않은 목록을 만드는 방법은 무엇입니까? Jul 30, 2025 am 04:50 AM

HTML이 변절되지 않은 목록을 만들려면 목록 컨테이너를 정의하기 위해 태그를 사용해야합니다. 각 목록 항목은 태그로 포장되며 브라우저에는 총알이 자동으로 추가됩니다. 1. 태그로 목록을 만듭니다. 2. 각 목록 항목은 태그로 정의됩니다. 3. 브라우저는 기본 점 기호를 자동으로 생성합니다. 4. 하위 목록을 중첩을 통해 구현할 수 있습니다. 5. CSS의 목록 스타일 유형 속성을 사용하여 디스크, 원, 사각형 또는 없음과 같은 심볼 스타일을 수정하십시오. 이 태그를 올바르게 사용하여 표준 비 순응 목록을 생성하십시오.

Contentestable 속성을 사용하는 방법은 무엇입니까? Contentestable 속성을 사용하는 방법은 무엇입니까? Jul 28, 2025 am 02:24 AM

thecontentEditableAttributeMakesanyHtMlEmentEdivideTibledingContEntEditable = "true", intuusStrodifictlyContentInTheBrowser.2.itiscommonLyusedInrichTexTedItors, note-taking-interfaces, supportElementSlikediv

See all articles