我正在尝试使用 python
获取 TOP n 标签及其迄今为止的用法的列表。
我可以在堆栈交换站点上运行此查询,如下所示,
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.py
,py-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.StackOverflow)
#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