2017-12-23 85 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)から解析を開始することは可能ですか?

ご清聴ありがとうございました。

EDIT:()が正常にWebページを解析しますが、結果はこれです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> 

これは私が期待している結果ではありません。 この問題を解決するにはどうすればよいですか? ありがとうございます。あなたは、XMLサービスサービスに渡しているコンテンツはそれほどXHTMLされていないため、

+0

parse()メソッドに渡すパラメータが無効なxmlであるため、エラーです。 –

+0

以下の答えで示唆されているように、 'XmlService.parse(html)'呼び出しを 'Xml.parse(html、true)'で置き換えることができます。 – sideshowbarker

+0

編集を表示します。 。 –

答えて

0

エラーが発生し、質問を解釈することができることを一つの方法では、Google Appsスクリプトを使用してXHTMLをHTMLに変換する方法

のですか?

Google Appsのスクリプトが含まれていません内蔵のあなたには、いくつかのマークアップエラーに「寛容」である非推奨のXMLサービスを使用するように試みることができるので、これを行うサービス。

もう1つの方法は、正規表現を使用するようなJavaScript文字列処理技術を使用する方法です。

詳細はWhat is the best way to parse html in google apps scriptを参照してください。

関連する問題