Skip to content

Instantly share code, notes, and snippets.

@brijeshb42
Created June 3, 2013 10:15
Show Gist options
  • Save brijeshb42/5697293 to your computer and use it in GitHub Desktop.
Save brijeshb42/5697293 to your computer and use it in GitHub Desktop.
spoj pdf downloader
import urllib2,os
os.system('cls')
print 'SPOJ problem pdf downloader'
url = 'http://www.spoj.com/problems/'
print 'Enter problem code'
prblm = raw_input()
prblm = prblm.upper()
url = url + prblm +'.pdf'
print 'Downloading '+url
pdf = urllib2.urlopen(url)
#if int(pdf.info().getheader('Content-Length').strip())<=10:
# print 'Error downloading '+prblm
# exit()
output = open(prblm+'.pdf','wb')
output.write(pdf.read())
pdf.close()
print 'Done'
Copy link

ghost commented Nov 30, 2017

Hey, thanks. I added bulk download from username


import urllib2,os

import httplib2
from BeautifulSoup import BeautifulSoup, SoupStrainer

username = 'yusufsholeh'

url = 'http://www.spoj.com/users/' + username + '/'

def download_problem(prblm):

    if len(prblm) < 1 :
        return
    
    url = 'http://www.spoj.com/problems/'
    prblm = prblm.upper()
    url = url + prblm +'.pdf'
    print 'Downloading '+url
    pdf = urllib2.urlopen(url)
    #if int(pdf.info().getheader('Content-Length').strip())<=10:
    #	print 'Error downloading '+prblm
    #	exit()
    output = open(prblm+'.pdf','wb')
    output.write(pdf.read())
    pdf.close()
    print 'Done'



import lxml.html

doc = lxml.html.parse(url)

links = doc.xpath('//a[@href]')

for link in links:
    if 'status' in str(link.attrib['href']) and ','+username in str(link.attrib['href']):
        prblem = link.attrib['href'][8:-13]
        download_problem(prblem)


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment