私のスクリプトの1つでは、urllib2
とBeautifulSoup
を使ってHTMLページを解析し、<script>
タグを読んでいます。PythonでJavascriptを解析する
は、これは私が得るものです:
<script>
var x_data = {
logged: logged,
lengthcarrousel: 2,
products : [
{
"serial" : "106541823"
...
</script>
私の目標は、x_data
変数でJSONを読み取ることであり、私はそれを正しく行う方法を知りません。 Iのいえ:
- 文字列に変換し、{最後のために、同じ}への最初の文字を削除
- のようなもので、正規表現を使用すると、最初のグループ
- を取ります「{*。}」他に何か?
これらは効率的かどうか、うまくいく方法があるかどうかはわかりません。
あなたは方法が他の方法よりも好ましいと思いますか?私が気づいていない方法はありますか?
アドバイスをいただきありがとうございます。
EDIT:
後のアドバイスは私は正規表現のソリューションを取得するが、私はre.MULTILINEを使用しているにもかかわらず、複数行に検索することはできません。
string1 = '<script>
var x_data = {
logged: logged,
lengthcarrousel: 2,
products : [
{
"serial" : "106541823"}
]
};
</script>'
p = re.compile(r'\{.*\};',re.MULTILINE);
m = p.search(string1)
if m:
print m.group(0)
else:
print "Error !"
私は常に持って「エラーを!」。
EDIT2:
re.DOTALL
とうまく動作し
。
https://pypi.org/project/jsonfinder/ –
入力の仕方によって異なります。もしそれが常に 'var x_data = ...'になるのであれば、文字列の先頭にアンカーされたビットを正規表現で置き換えることができます。あなたのソリューションは、JSパーサーを埋め込むのと同じくらい簡単なものから複雑なものまでのどこにでも置くことができます。 –
こんにちは、それは常に 'var x_data = ...'になります。ありがとう、私は今すぐ正規表現の解決策を書いています。 –