【问题标题】:How to get JSON data within a script using Python如何使用 Python 在脚本中获取 JSON 数据
【发布时间】:2018-10-25 16:50:01
【问题描述】:

我正在尝试获取在检查特定 URL 的页面源时看到的 JSON 数据。此 URL 有多个标签,但是这些标签中只有一个具有 JSON 格式的数据。

这是我目前的实现:

import urllib2 
from bs4 import BeautifulSoup
import re
import json

url = "https://www.exampleURL.com"

page = urllib2.urlopen(url)
soup = BeautifulSoup(page, 'html.parser')
scripts = soup.find_all('script')

for script in scripts:
    try:
        data = json.loads(script)
        print("Success")
    except Exception:
        print("Not Successful")

此实现无法打印 Success。我想要的 JSON 数据格式如下,但是只有一个脚本标签有 JSON 数据,其他的都与我无关。

<script>
    __DATA__ = {........};
</script>

【问题讨论】:

    标签: python json beautifulsoup


    【解决方案1】:

    在尝试将&lt;script&gt; 的内容解析为 json 之前,您需要进行一些数据处理。特别是,您需要删除 JavaScript 字典前面的 __DATA__ = 部分。

    要记住的几件事:

    • Javascript 字典不一定是 JSON blob。特别是

    例子

    {hello: 2}   # Correct JavaScript, incorrect JSON - missing quotes around key
    {'hello': 2} # Correct JavaScript, incorrect JSON - Quotes must be double quotes
    
    {"hello": 2} # Correct JSON and JavaScript
    

    一些可能有助于调试的事情

    for script in scripts:
        try:
            print(script) # See what you try to load
            data = json.loads(script)
            print("Success")
        except Exception as e:
            print("Not Successful because {}".format(e)) # Print additional information
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-22
      • 1970-01-01
      • 1970-01-01
      • 2016-03-29
      • 2014-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多