Skip to content

Instantly share code, notes, and snippets.

@takoika
Created February 13, 2016 06:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save takoika/8be5a7da612417989bfa to your computer and use it in GitHub Desktop.
Save takoika/8be5a7da612417989bfa to your computer and use it in GitHub Desktop.
Qiita api wrapper for crowling for limited purpose.
import time
import urllib
import urllib.parse
import urllib.request
import json
sleep_time = 4 # Sleep time 4 seconds is determined for fear of exceeding request limits. 1request/4sec < 1000request/1hour
api_url = "http://qiita.com/api/v2/"
def getQiita(bearer_token,data_obj,protocol):
url = api_url+protocol
full_url = url+ '?' + urllib.parse.urlencode(data_obj)
req = urllib.request.Request(full_url)
req.add_header('Authorization','Bearer '+bearer_token)
response = urllib.request.urlopen(req)
return json.loads(response.read().decode('utf-8')),response.info()
def getQiitaTags(bearer_token,page,per_page=100,sort=False):
args = {'per_page':per_page,'page':page}
if sort:
args[sort] = 'count'
d,h = getQiita(bearer_token,args,'tags')
return d,int(h['Total-Count'])
def getQiitaItemsByTag(bearer_token,tag,page,per_page=100,sort=False):
args = {'per_page':per_page,'page':page}
d,h = getQiita(bearer_token,args,'tags/{0}/items'.format(urllib.parse.quote(tag)))
return d,int(h['Total-Count'])
def getQiitaUsersByItemStocked(bearer_token,item_id,page,per_page=100):
args = {'per_page':per_page,'page':page}
d,h = getQiita(token,args,'items/{0}/stockers'.format(urllib.parse.quote(item_id)))
return d,int(h['Total-Count'])
def safeSleep():
time.sleep(sleep_time)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment