2017-12-23 2 views
0

일부 URL을 추출하려고하는 웹 페이지를 구문 분석하려고합니다.루트 요소 뒤에 오는 문서의 마크 업은 올바른 형식이어야합니다. 미리 웹 페이지를 수정할 수 없습니다.

[...] 
var html = UrlFetchApp.fetch('https://cse.google.com/cse?q=example&cx=006680642033474972217%3A6zo0hx_wle8#gsc.tab=0&gsc.q=example&gsc.page=1').getContentText(); 
var doc = XmlService.parse(html); 
[...] 

이 코드의 URL은 예입니다 미래에 단어 "예"두 사건에서, 다른 것을 할 수있다.

코드를 실행하면 XmlService.parse()가 실패하고 제목에 오류가 표시됩니다.

웹 페이지에 일부 마크 업이 엉망임을 알고 있습니다.

문제점은 URLFetchApp.fetch()가 제공하는 모든 작업을해야하기 때문에 마크 업을 한 번 수정하고 다른 곳의 문제를 해결할 수 없다는 점입니다.

전체 문서를 구문 분석 할 필요가 없으므로 실제로 확인하지 않아도되는 문서의 일부에 마크 업 오류가있는 경우 간단히 신경 쓰지 않아도됩니다.

마크 업 오류를 자동으로 수정할 수있는 방법이 있습니까?

또는 다른 방법으로 시작 부분 (특히 gsc-results gsc-webResult)에서 파싱을 시작할 수 있습니까?

감사합니다.

편집 :()가 성공적으로 웹 페이지를 구문 분석,하지만 결과는 이것입니다 Xml.Parse를 사용하여

.

<?xml version="1.0" encoding="UTF-8"?><body><noscript><h3>Google Custom Search requires JavaScript</h3><p>JavaScript is either disabled or not supported by your browser. To use Custom Search, enable JavaScript by changing your browser options and reloading this page.</p></noscript><div id="cse-hosted"><div id="cse-header"><a href="#" id="cse-logo-target" shape="rect"/><div id="cse-logo"><span class="lockup-logo"/> <span class="lockup-text"><span class="lockup-brand"> Custom Search</span></span></div><div id="cse-search-form">Loading</div></div><div id="cse-body"><div id="cse">Loading<div class="gsc-adBlock gsc-imageResult-classic gsc-imageResult-column gsc-clear-button gsc-branding hidden"/></div></div><div id="cse-footer">© 2017 Google</div></div></body> 

나는 예상 한 결과가 아닙니다. 이 문제를 해결하려면 어떻게해야합니까? 미리 감사드립니다.

+0

parse() 메서드로 전달할 매개 변수가 유효한 xml이 아니므로 오류가 발생합니다. –

+0

아래 답변에서 언급했듯이 XmlService.parse (html) 호출을'Xml.parse (html, true)'로 바꿀 수 있으며 – sideshowbarker

+0

을 볼 수 있습니다. 주석을보기에는 너무 많은 텍스트가 있습니다. . –

답변

0

XML을 서비스 서비스에 당신이 전달하는 내용이 너무 XHTML되지 않기 때문에 오류가 발생, 문제는 해석 될 수있는 한 가지 방법은

방법 Google 애플리케이션 스크립트를 사용하여 XHTML로 HTML을 변환하는 것입니다?

Google Apps Script에는이 작업을 수행하는 기본 제공 서비스가 없으므로 일부 마크 업 오류에 "관용"인 deprecate XML 서비스를 사용해 볼 수 있습니다.

또 다른 방법은 정규식을 사용하는 것과 같은 JavaScript 문자열 처리 기술을 사용하는 것입니다.

자세한 내용은 What is the best way to parse html in google apps script을 참조하십시오.

관련 문제