我有一个' requests.models.Response'我要解析的对象。在响应上调用response.json()会产生一个' unicode'对象
主要 - 如何检查响应是否为json?
其次 - 我可以解析一个json' unicode'用bs4对象?
我的代码如下:
import requests
post_hdrs = {
'type': 'regulated',
'url': 'node/17'
}
r = requests.post(
url='https://www.gfsc.gg/fetch-records-for-companies-table',
data=post_hdrs,
)
json_data = r.json()
答案 0 :(得分:1)
内容类型位于标题中:
>>> r.headers['Content-Type']
'application/json'
获取json数据后,使用BeautifulSoup解析它。例如:
import requests
from bs4 import BeautifulSoup
post_hdrs = {
'type': 'regulated',
'url': 'node/17'
}
r = requests.post(
url='https://www.gfsc.gg/fetch-records-for-companies-table',
data=post_hdrs,
)
print r.headers['Content-Type']
print
data = r.json()
soup = BeautifulSoup(data)
for c in soup.findAll('td',attrs={'class':'Company Name'}):
print c.text
输出:
application/json
2Mi Financial Services Limited
71FS Insurance Company Limited
7L Capital Partners Emerging Europe L.P.
7L Equity Partners (EE) Limited
: : :
答案 1 :(得分:0)
如果它不是有效的json对象,则该方法将抛出异常(如果内存服务,则为ValueError),您可以捕获该异常。它的Python"请求原谅"工作方式。
至于处理unicode,这应该可以解决问题:
import ast
ast.literal_eval(r.text)