【问题标题】:how to fetch javascript contents in python如何在python中获取javascript内容
【发布时间】:2015-10-31 19:07:07
【问题描述】:

我有一个网站,其中包含我想要获取的存储在 javascript 中的数据。如何获取它?

代码是这样的:- http://pastebin.com/zhdWT5HM

我想从“var playerData”行中获取。我想拿这个东西:-“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

我得到 [] 作为我的输出。我似乎无法在这里找出我的问题。 请帮助男孩和女孩:)

【问题讨论】:

    标签: javascript python html python-2.7 beautifulsoup


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-22
      • 2010-12-05
      • 2015-12-26
      • 2012-09-27
      • 1970-01-01
      • 2017-05-22
      • 1970-01-01
      相关资源
      最近更新 更多