Skip to content

Instantly share code, notes, and snippets.

@myusuf3
Created July 3, 2013 02:56
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save myusuf3/92f2d1c7f6278e64ba74 to your computer and use it in GitHub Desktop.
Save myusuf3/92f2d1c7f6278e64ba74 to your computer and use it in GitHub Desktop.
import requests
from StringIO import StringIO
from lxml.html import parse
STARS = '//*[@id="trending-repositories"]/ol/li[%d]/ul/li[1]/a/text()'
FORKS = '//*[@id="trending-repositories"]/ol/li[%d]/ul/li[2]/a/text()'
USER = '//*[@id="trending-repositories"]/ol/li[%d]/h3/a[1]/text()'
REPO = '//*[@id="trending-repositories"]/ol/li[%d]/h3/a[2]/text()'
def get_explore_page():
response = requests.get('http://www.github.com/explore/')
return StringIO(response.content)
def get_stars(root, index):
stars = root.xpath(STARS % index)
stars = int("".join(stars).replace(',', ''))
return stars
def get_forks(root, index):
forks = root.xpath(FORKS % index)
forks = int("".join(forks).replace(',', ''))
return forks
def get_user(root, index):
user = root.xpath(USER % index)
return user[0]
def get_repo(root, index):
repo = root.xpath(REPO % index)
return repo[0]
def parse_explore(content):
indexes = [1, 2, 3, 4]
trending_repos = []
root = parse(content).getroot()
for index in indexes:
trending_repos.append({
'user': get_user(root, index),
'project': get_repo(root, index),
'stars': get_stars(root, index),
'forks': get_forks(root, index)
})
return trending_repos
def main():
content = get_explore_page()
print parse_explore(content)
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment