使用urllib2检查响应

2024-09-24 00:23:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用opencorporates api递增页面计数器来访问页面。但问题是有些时候会出现无用的数据。例如,在下面的“管辖权”的url中,我得到的网页只显示了以下内容:

{"api_version":"0.2","results":{"companies":[],"page":1,"per_page":26,"total_pages":0,"total_count":0}}

技术上是空的。如何检查这些数据并跳过这些数据以转到下一个辖区?在

这是我的密码

^{pr2}$

Tags: 数据apiurl网页versionpage计数器页面
2条回答

我认为这个例子实际上是not“技术上是空的。”它包含数据,因此在技术上不是空的。数据只是不包括任何对您有用的字段。:-)

如果希望代码跳过包含无趣数据的响应,则只需在写入任何数据之前检查JSON是否具有必需的字段:

content = response.read()
try:
    json_content = json.loads(content)
    if json_content['results']['total_count'] > 0:
        fo = str(i) + '.json'    
        OUTFILE = os.path.join(directory, fo)
        with open(OUTFILE, 'w') as f:
            f.write(content)
except KeyError:
    break
except ValueError:
    break

你可能想报告ValueError或KeyError,但这取决于你自己。在

解释返回的响应(您已经知道它是json)并检查所需的数据是否存在。在

...
content = response.read()
data = json.loads(content)
if not data.get('results', {}).get('companies'):
    break
...

这是你用请求和答案编写的代码。它远没有达到它应有的健壮或干净,但它展示了您可能想要走的道路。利率限制只是猜测,似乎行不通。记住把你真正的API密钥放进去。在

^{pr2}$

相关问题 更多 >