python githubコードライブラリリストの取得
2332 ワード
1.背景
プロジェクト要件はgithubのrepoのapiを取得し、repoのデータを抽出して分析できるようにすることです.一日研究して、やっとこの問題を解決しました.効率は低いですが.
githubのrepoを表示するapiのため、各repoの詳細がリストされ、json形式です.複数のjsonフォーマットデータを解析できる方法はまだ見つかっていないようで、比較的愚かなsplite加reの方法を使っています.もしみんながもっと良い方法があれば、伝言を出さないで討論します!
2.コード
ここでnumの値はページのidを指し、numの値を絶えず大きくすることで、repoを無限に抽出することができます.githubのapiは流量に制限があるため,これは実行可能な方法である.
効果は以下の通りです(抽出されたrepoのapiアドレス):
https://api.github.com/repos/wycats/merb-core
https://api.github.com/repos/rubinius/rubinius
https://api.github.com/repos/mojombo/god
https://api.github.com/repos/vanpelt/jsawesome
https://api.github.com/repos/wycats/jspec
https://api.github.com/repos/defunkt/exception_logger
https://api.github.com/repos/defunkt/ambition
https://api.github.com/repos/technoweenie/restful-authentication
https://api.github.com/repos/technoweenie/attachment_fu
https://api.github.com/repos/topfunky/bong
https://api.github.com/repos/Caged/microsis
https://api.github.com/repos/anotherjesse/s3
https://api.github.com/repos/anotherjesse/taboo
https://api.github.com/repos/anotherjesse/foxtracs
https://api.github.com/repos/anotherjesse/fotomatic
https://api.github.com/repos/mojombo/glowstick
https://api.github.com/repos/defunkt/starling
https://api.github.com/repos/wycats/merb-more
https://api.github.com/repos/macournoyer/thin
https://api.github.com/repos/jamesgolick/resource_controller
https://api.github.com/repos/jamesgolick/markaby
https://api.github.com/repos/jamesgolick/enum_field
https://api.github.com/repos/defunkt/subtlety
https://api.github.com/repos/defunkt/zippy
https://api.github.com/repos/defunkt/cache_fu
https://api.github.com/repos/KirinDave/phosphor
プロジェクト要件はgithubのrepoのapiを取得し、repoのデータを抽出して分析できるようにすることです.一日研究して、やっとこの問題を解決しました.効率は低いですが.
githubのrepoを表示するapiのため、各repoの詳細がリストされ、json形式です.複数のjsonフォーマットデータを解析できる方法はまだ見つかっていないようで、比較的愚かなsplite加reの方法を使っています.もしみんながもっと良い方法があれば、伝言を出さないで討論します!
2.コード
import re
import os
def GetUrl(num):
str = os.popen("curl -G https://api.github.com/repositories?since=%d"%(num)).read()
pattern = '"url"'
pattern1='repos'
urls=str.split(',
')
for i in urls:
if pattern in i and pattern1 in i:
# text1=i.splite(':')
text=re.compile('"(.*?)"').findall(i)[1]
print text
if __name__=='__main__':
GetUrl(1000)
ここでnumの値はページのidを指し、numの値を絶えず大きくすることで、repoを無限に抽出することができます.githubのapiは流量に制限があるため,これは実行可能な方法である.
効果は以下の通りです(抽出されたrepoのapiアドレス):
https://api.github.com/repos/wycats/merb-core
https://api.github.com/repos/rubinius/rubinius
https://api.github.com/repos/mojombo/god
https://api.github.com/repos/vanpelt/jsawesome
https://api.github.com/repos/wycats/jspec
https://api.github.com/repos/defunkt/exception_logger
https://api.github.com/repos/defunkt/ambition
https://api.github.com/repos/technoweenie/restful-authentication
https://api.github.com/repos/technoweenie/attachment_fu
https://api.github.com/repos/topfunky/bong
https://api.github.com/repos/Caged/microsis
https://api.github.com/repos/anotherjesse/s3
https://api.github.com/repos/anotherjesse/taboo
https://api.github.com/repos/anotherjesse/foxtracs
https://api.github.com/repos/anotherjesse/fotomatic
https://api.github.com/repos/mojombo/glowstick
https://api.github.com/repos/defunkt/starling
https://api.github.com/repos/wycats/merb-more
https://api.github.com/repos/macournoyer/thin
https://api.github.com/repos/jamesgolick/resource_controller
https://api.github.com/repos/jamesgolick/markaby
https://api.github.com/repos/jamesgolick/enum_field
https://api.github.com/repos/defunkt/subtlety
https://api.github.com/repos/defunkt/zippy
https://api.github.com/repos/defunkt/cache_fu
https://api.github.com/repos/KirinDave/phosphor