运行 使用 python 查询 stackexchange 数据

run query on stackexchange data using python

我正在尝试使用 python.

获取 TOP n 个标签及其使用情况的列表

我可以在 stackexchange site 上 运行 这个查询,如下所示,

SELECT *
FROM Tags
WHERE ExcerptPostId is not NULL
order by Count
Desc

结果如下,

Id  TagName Count   ExcerptPostId   WikiPostId
3   javascript  1538133 3624960 3607052
17  java    1360163 3624966 3607018
9   c#  1169923 3624962 3607007
5   php 1157178 3624936 3607050
1386    android 1063197 3625001 3607484
820 jquery  890140  3625262 3607053
16  python  877784  3624965 3607014
2   html    717700  3673183 3673182
10  c++ 549953  3624963 3606997
58338   ios 545753  4536664 4536663
 .......
 ....... and so on.

但是,有没有办法使用 python 获得完全相同的数据?可能 运行 使用 API、

的相同查询

我查看了 stack.pypy-stackexchange ,但找不到文档。 有什么想法吗?

知道了。

看起来有一个 tags() 方法可用。虽然看代码,但我无法理解属性。 但是,我能够使用 dir 推断出 tags() 方法的可用属性。

>>> dir(tag)
['__class__', '__delattr__', '__dict__', '__doc__', '__format__',   
'__getattribute__', '__hash__', '__init__', '__module__', '__new__', 
'__reduce__', '__reduce_ex__', '__repr__', '__setattr__',_sizeof__',
 '__str__', '__subclasshook__', '__weakref__', '_extend', '_up',
  'count', 'fetch', 'id', 'json', 'json_ob', 'name', 'partial', 'site',
 'synonyms', 'top_answerers', 'top_askers', 'transfer', 'wiki']
>>> 

之后就是选择合适属性的问题了。
这是代码。

import stackexchange

so = stackexchange.Site(stackexchange.Whosebug)

#Print top 10 tags and their count
for  idx, tag in enumerate(so.tags()):
    if idx >= 10:
        break
    print("{},{}".format(tag.name , tag.count))

结果

>>> 
javascript,1540896
java,1361964
c#,1171336
php,1158685
android,1064757
jquery,891031
python,880103
html,718747
c++,550622
ios,546498