0

我想通过python从github API获取一些数据:

import requests
headers = {'User-Agent': 'Awesome-Octocat-App', 'Accept': 'application/vnd.github.preview+json'}
link = "https://github.com/search?q=chembl+created:>=2000"
r = requests.get(link, headers=headers)

看起来一切都很顺利:

r.ok
>>> True

所以我希望有json作为回应:

r.json()

但这会引发异常:

JSONDecodeError: No JSON object could be decoded: line 1 column 0 (char 0)

不幸的是,我拥有的是 html:

r.content

<!DOCTYPE html>
<html>
  <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# githubog: http://ogp.me/ns/fb/githubog#">
  <meta charset='utf-8'>
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
...

这个 html 包含我正在寻找的所有存储库,但我需要 json 而不是 html。为什么?

4

2 回答 2

3

您需要使用实际的 API来获取 JSON 内容。http://github.com/search是常规的 HTML 前端。您可能想搜索存储库

import requests

headers = {'User-Agent': 'Awesome-Octocat-App', 'Accept': 'application/vnd.github.preview+json'}
link = "https://api.github.com/search/repositories"
query = {'q': 'chembl created:>=2000'}
r = requests.get(link, headers=headers, params=query)

这给了我:

>>> r = requests.get(link, headers=headers, params=query)
>>> r.ok
True
>>> r.json().keys()
[u'total_count', u'items']
>>> r.json()['total_count']
17
于 2013-09-04T10:52:51.237 回答
2

您正在使用的网址:

https://github.com/search?q=chembl+created:>=2000

您应该使用以下网址:

https://api.github.com/search/repositories?q=chembl+created:>=2000.

这是文档:

http://developer.github.com/v3/search/#search-repositories

于 2013-09-04T10:50:24.953 回答