2015-08-08 54 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