2016-12-28 7 views
0

私は、javascriptレスポンスから変数 'html'の内容を取得しようとしています。私はHTMLを抽出する正規表現モジュールを使用していますが、私は出力として 'なし'を得た。RegexモジュールPythonのコンテンツを抽出する

response = 'var port_statistics = (function(window, undefined) { 

function loadScript(url, callback) { 
    var script = document.createElement('script'); 
    script.async = true; 
    script.src = url; 
    var entry = document.getElementsByTagName('script')[0]; 
    entry.parentNode.insertBefore(script, entry); 
    script.onload = script.onreadystatechange = function() { 
     var rdyState = script.readyState; 
     if (!rdyState || /complete|loaded/.test(script.readyState)) { 
      callback(); 
      script.onload = null; 
      script.onreadystatechange = null; 
     } 
    }; 
} 

function injectCss(css) { 
    var style = document.createElement('style'); 
    style.type = 'text/css'; 
    css = css.replace(/\}/g, "}\n"); 
    if (style.styleSheet) { 
     style.styleSheet.cssText = css; 
    } else { 
     style.appendChild(document.createTextNode(css)); 
    } 
    var entry = document.getElementsByTagName('script')[0]; 
    entry.parentNode.insertBefore(style, entry); 
} 

var port_statistics = {}; 
var html = ["<div class=\"results_section\">", ", " 
<div class='\"heading\"'> Overview </div> ", 

#HERE THE CONTENT I AM TRYING TO GET 

, "", "</div>", "", "", "</div>"].join('\n'); 

var div = document.createElement('div'); 
div.innerHTML = html; 
var appendTo = document.getElementById('tag-port_statistics-widget'); 

appendTo.parentNode.insertBefore(div, appendTo); 

loadScript('https://connect.url.com//jquery-1.11.1.min.js', function() { 

    portWidget.$(function() { 
     portWidget.$('tr.parent') 
      .click(function() { 
       portWidget.$(this).siblings('.child-' + this.id).fadeToggle('slow'); 
       portWidget.$(this).find('.plus').toggle(); 
       portWidget.$(this).find('.minus').toggle(); 
      }); 
    }); 
}); 

return port_statistics; 

})(window);' 

prog=re.search("var html = [.*?].join('\n');", response) 
print(prog) #Output: None 

また、私はこれを試してみました:

soup = BeautifulSoup(response, 'html.parser') 
print(soup.prettify()) 
div_search = re.search('["<div class=\"results_section\">",(.*), "</div>"]', soup.prettify(), re.IGNORECASE) 
print(div_search.group(0)) #Output: v 

は、どのように私は、それが変数 'HTML' のコンテンツを取得するためにしてくださいできますか? 2番目の部分では、このコンテンツを使用して、HTMLタグの内容をBeautifulSoupで解析したいと考えています。

ありがとうございます。

EDIT

私はこれを取得しようとしています: ''

"<div class=\"results_section\">", ", " 
<div class='\"heading\"'> Overview </div> ", 

#HERE THE CONTENT I AM TRYING TO GET 

, "", "</div>", "", "", "</div>" 
+0

出力します。 –

+0

こんにちは@宏杰李、私は私の答えを編集しました。私は 'html'と呼ばれる変数の配列内のデータを取得しようとしています。お返事ありがとうございます! –

答えて

0
result = re.search(r'var html = \[(.+?)\]', response, re.DOTALL) 
print(result.group(1)) 

(ドット)デフォルトモードでは、これは、改行である を除く任意の文字に一致します。DOTALLフラグが指定されている場合は、 文字に改行が含まれています。

テキストに改行が含まれているため、一致するにはDOTALLを使用する必要があります。

+0

ありがとうございます!実際には、 ' [+]'のようなタグがありました: 'result = re.search(r'var html = \ ["<.*>" \]、html、re.DOTALL)完全に! –

+0

var to htmlの部分はJavaScripによって行われています。私はPythonでそれをやろうとしますが、動作しません。 –

+0

okありがとう、私はsplit()関数とjoin()関数を何度も使用していましたが、効率的ではありません。 –

関連する問題