일부 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>
나는 예상 한 결과가 아닙니다. 이 문제를 해결하려면 어떻게해야합니까? 미리 감사드립니다.
parse() 메서드로 전달할 매개 변수가 유효한 xml이 아니므로 오류가 발생합니다. –
아래 답변에서 언급했듯이 XmlService.parse (html) 호출을'Xml.parse (html, true)'로 바꿀 수 있으며 – sideshowbarker
을 볼 수 있습니다. 주석을보기에는 너무 많은 텍스트가 있습니다. . –