2017-11-27 3 views
1

私はPython、BeautifulSoupなどで新しいですが、 ウェブサイトの "script"タグ内のjavascript変数の中にあるjsonデータを抽出したいと思います。ここで javascriptからデータを取り出すvar <script>とpython

は、今の私のコードです:

<script> 
var hours = [{...dataIwant...}]; 
<\script> 

しかし、私は唯一の「スクリプト」または「VARのないデータが欲しい:

import re 
from bs4 import BeautifulSoup 
import json 
import requests 
url = 'myUrl' 
page = requests.get(url).content 
soup = BeautifulSoup(page, "html.parser") 
pattern = re.compile(r"var hours = .") 
script = soup.find("script",text=pattern) 
print(script) 

が今の私のような形式でデータを抽出することができます時間= "です。私はjsonでそれを変更し、それをapache nifiに入れたいと思います。

私はここでGoogleで見つけたすべてを試しました。しかし、私が変数を抽出してjson形式に変更しようとするとき、ほとんどの場合、私は "None"または他のエラーがあります。

json形式でデータを取得するのに役立つヒントがあれば、それは素晴らしいことでしょう!

ありがとうございました!

+0

あなたはグループでそれをキャプチャすることができ[ 'VARの時間=(。+)、'](https://regex101.com/r/q2CAZe/1) –

+0

の私パターン= re.compile?またはsoup.findの後にre.search? –

答えて

1

soup.find()を使用した後に "script"が文字列の場合は、正規表現を使用して必要な部分を得ることができます。 このようなものが動作する可能性があります。

m = re.search('var hours = (.+)[,;]{1}', script) 
if m: 
    found = m.group(1) 

参照:How to extract a substring from inside a string in Python?

+0

うーん、私はすでにそれを試みたと思うが、それは "なし"を返した。しかし、私はできるだけ早くそれをもう一度試みます! –

+0

ほぼこれ、ありがとうございます! Arrayを抽出しますが、 'latitude or longitude'のようなデータは抽出しません。しかし、私はそれを行う方法を見つけるでしょう。 その後、私はJsonを解析するだけで良いでしょう。 ありがとうございます! –

関連する問題