Python 从HTTP响应解析Json字符串
我试图用Python解析来自HTTP请求的JSON响应。但我得到了以下例外:Python 从HTTP响应解析Json字符串,python,json,Python,Json,我试图用Python解析来自HTTP请求的JSON响应。但我得到了以下例外: ValueError: No JSON object could be decoded Python代码: profile = webdriver.FirefoxProfile() profile.set_preference('network.http.phishy-userpass-length', 255) browser = webdriver.Firefox(firefox_profile=profile
ValueError: No JSON object could be decoded
Python代码:
profile = webdriver.FirefoxProfile()
profile.set_preference('network.http.phishy-userpass-length', 255)
browser = webdriver.Firefox(firefox_profile=profile)
browser.get("https://"+username+":"+password+"@"+url)
htmltext= str(browser.page_source)
html=soup(htmltext)
jsondata= str(html.find('pre')).strip('</pre>')
data=json.loads(jsondata)
print data['entries']
我在这里看到了几个问题,但最突出的两个问题是:
应用程序
和用户
的值使用标准库工具(
urllib2
或urllib.request
,具体取决于您的Python版本)应该足够了,也许只需要设置几个显式的HTTP头。就我个人而言,我会用这个来完成这样的任务;它甚至带有内置的JSON处理。我没有看到您初始化jsondata。jsondata
来自哪里?请注意,您在这里发布的JSON无效;应用程序
和用户
值周围没有引号。您可以使用一个linter来测试某个东西是否是有效的JSON。JSONLint.com提供了一个在线版本。抱歉@MartijnPieters my bad我已经将“html”分配给了“jsondata”。我已经修改了代码,您现在可以检查一下吗。@查兰:您现在正在传入一个BeautifulSoup对象。既然您试图解析JSON,而不是HTML,为什么还要在这里使用BeautifulSoup?实际上,我并没有得到简单的JSON字符串作为响应,而是一个HTML字符串,因此我使用BeautifulSoup来解析它,并找到存储在标记中的JSON。我还没有公布所有这些细节。对不起,没来clear@charan:可能是您的提取方法不正确。可能您正在解析的是JavaScript,而不是严格的JSON。可能是您想要提取的信息可以通过正则表达式等更好地处理。这就是为什么您需要a)明确您真正要解决的问题(而不仅仅是您自己如何解决的问题)和b)给我们一个可复制的样本,以便我们可以尝试并排除故障。您没有给我们任何建议,所以我只能给您一些一般建议。使用Selenium的原因是我访问的URL使用的是自签名证书,因此在使用urllib2库时,它会抛出与SSL相关的异常。谢谢@Martijin,我会记住你的建议的。@charan:urllib2根本不能验证证书,所以它应该可以工作。关于堆栈溢出,有几篇文章解释了如何强制它进行验证。请求也不会验证,除非您告诉它,请参阅。
{
"count":1,
"entries":
[
{
"id":15862,
"application":loginAudit,
"user":charan.kumar@speridian.com,
"time":"2014-10-30T02:08:14.103-04:00",
"values":
{
"\/loginAudit\/login\/no-error\/user":"charan.kumar@speridian.com"
}
}
]
}