>source

Google App Script를 사용하여 Google 스프레드시트에서 앱을 만들고 있습니다. 앱이 웹 페이지를 스크랩하고 HTML 페이지를 문자열로 반환합니다. DOM 쿼리를 사용하여 페이지 내에서 필요한 데이터를 찾을 수 있도록 DOM에 삽입하려고 합니다. 일반적으로 다음을 사용하여 문서 조각을 만들어 이를 수행할 수 있습니다.document.createDocumentFragment(), 또는 다음을 사용하여 분리된 요소 만들기document.createElement(), 다음 HTML 문자열로 innerHTML을 설정합니다. 문제는 GAS에문서문맥.

해결 방법이나 큰 텍스트 문자열을 쿼리하는 다른 방법에 대한 아이디어가 있는 사람이 있습니까?

p.s. 내 첫 번째 본능은 API로 필요한 데이터를 찾는 것이지만 내 요구에 맞는 데이터를 찾을 수 없습니다. 화면 스크래핑은 나의 최후의 수단입니다.

Google 앱 스크립트는 브라우저가 아닌 서버에서 실행되므로 DOM이 없습니다. HTML 형식이 잘못되지 않은 한 XMLService를 사용하려고 할 수 있습니다. 물론 나는 당신이 무엇을 성취하려고 하는지 전혀 모르지만 DOM 쿼리를 사용하여 무언가를 찾으려면 조각을 사용하고 배열에 데이터를 캡처하고 localStorage에 저장하는 것을 선호합니다. 데이터를 표준 자바스크립트 형식으로 쉽게 가져와 JSON이나 자바스크립트로 쉽게 읽을 수 있는 파일에 붙여넣을 수 있습니다.

Cooper2021-11-24 17:24:11

'DOM에 삽입하려고 합니다'라는 말의 의미를 설명해 주시겠습니까? 무슨 DOM? HtmlService 개체를 만들고 있습니까?

I hope this is helpful to you2021-11-24 17:24:11

@Cooper의 제안에 감사드립니다. 화면 스크래핑은 프로그래밍 방식으로 모두 수행되는 더 큰 앱의 한 부분일 뿐이므로 GAS 내에서 이 작업을 수행해야 합니다. 스니펫은 소규모 수동 실행 code로만 유용합니다.

T Nguyen2021-11-24 17:24:11

안녕하세요 @Ihopethisishelpfultoyou, 분리된 DOM을 만들고 싶습니다. 그런 다음 querySelector 등과 같은 메서드를 사용하여 HTML 문서를 탐색할 수 있습니다. 나는 이것이 존재하지 않는 DOM을 생성하는 방법이 있다면 기본적으로 질문에 대한 것인 서버 측 JS라는 것을 이해합니다.

T Nguyen2021-11-24 17:24:11

importxml과 xpath만 사용하지 않는 이유는 무엇입니까?

Mike Steelson2021-11-24 17:24:11
  • 답변 # 1

    최소한 서버측 code에서가 아닌 Google Apps Script에서 DOM을 만들 수 없습니다.

    HTML 문자열을 쿼리하려면 요소 ID를 포함하는 것과 같이 식별 가능한 하위 문자열과 함께 필요한 데이터가 페이지의 어디에 있는지 정확히 알아야 하지만 이러한 하위 문자열이 생성되어 알 수 없는 경우가 많습니다. HTML은 또한 RegEx에서 구문 분석할 수 없는 것으로 유명합니다..

    스크립트를 무인으로 실행할 필요가 없는 경우 스프레드시트 부가기능으로 이 작업을 수행할 수 있습니다. 이 경우 워크플로는 다음과 같습니다.

    • HTML 데이터를 문자열로 스크랩
    • 메서드를 사용하여 HTMLOutput 개체 만들기
    • HTML을 다음 형식으로 엽니다. 대화 상자 또는 사이드바대화 상자 내에서 querySelector 호출을 수행하십시오. (이 경우 다음을 code로 추가해야 합니다.< 스크립트>페이지를 로드할 때 실행되는 태그
    • 를 사용하여 Google Apps Script에 값을 반환합니다.

    이 답변을 여기로 옮기는 것을 고려하십시오.

    TheMaster2021-11-24 17:24:11

    고마워, 나는 내 특정 상황에서 작동했던 무차별 대입 정규식을 사용하게 되었지만 이것은 좋은 제안입니다.

    T Nguyen2021-11-24 07:15:36
  • 이전 ggplot2 : ggplot에서 보조 x축 플로팅
  • 다음 node.js : accessToken이 만료되고 클라이언트가 새로 고침 토큰을 보내야 할 때 클라이언트에 보내야 하는 상태 code