2015-08-08 92 views
1

我有一個網站有我想要存儲在JavaScript中的數據。我如何獲取它?如何在python中獲取javascript內容

的代碼是這樣的: - http://pastebin.com/zhdWT5HM

我想從 「VAR playersData」 行去取。我想獲取這個東西: - 「playerId」:「showsPlayer」(顯然沒有引號)。我該怎麼做?

我試過美麗的湯。我目前的腳本看起來像這樣

q = requests.get('websitelink') 
soup = BeautifulSoup(q.text) 

searching = soup.findAll('script',{'type':'text/javascript'}) 
for playerIdin searching: 
    x = playerId.find_all('var playersData', limit=1) 
    print x 

我得到[]作爲我的輸出。我似乎無法在這裏找出我的問題。 請幫忙把傢伙和女友:)

回答

1

BeautifulSoup只會幫助找到想要的script標籤。然後,你將有多種選擇:你可以用JavaScript分析器提取所需的數據,如slimit,或使用正則表達式:

import re 

from bs4 import BeautifulSoup 

page = """ 
<script type="text/javascript"> 
      var logged = true; 
      var video_id = 59374; 
      var item_type = 'official'; 

      var debug = false; 
      var baseUrl = 'http://www.example.com'; 
      var base_url = 'http://www.example.com/'; 
      var assetsBaseUrl = 'http://www.example.com/assets'; 
      var apiBaseUrl = 'http://www.example.com/common'; 
      var playersData = [{"playerId":"showsPlayer","userId":true,"solution":"flash","playlist":[{"itemId":"5090","itemAK":"Movie"}]]; 
</script><script type="text/javascript" > 
""" 
soup = BeautifulSoup(page) 

pattern = re.compile(r'"playerId":"(.*?)"', re.MULTILINE | re.DOTALL) 
script = soup.find("script", text=pattern) 

print pattern.search(script.text).group(1) 

打印:

showsPlayer 
+0

感謝名單alecxe ..工作就像一個魅力:) – Xonshiz