Di bawah ini adalah kode Python yang saya buat selagi iseng. Skrip yang saya buat akan mengambil gambar (image) dari situs mangavolume.
import urllib,urllib2, urllister, os.path
imageTotal = 0
imageNow = 0
sizeNow = 0
def myReportHook(count, blockSize, totalSize):
global sizeNow
sizeNow = sizeNow + blockSize
print count, sizeNow, totalSize
def getImage(url):
x = url.rfind("compressed/") + 11
y = url[x:]
print y
if not os.path.isfile(y):
sizeNow = 0
urllib.urlretrieve(url, y,reporthook=myReportHook)
urllib.urlcleanup()
def retrieve(url):
sock = urllib.urlopen(url)
htmlSource = sock.read()
sock.close()
return htmlSource
def cekImage(parser):
for image in parser.images:
if image.find("http") != -1:
getImage(image)
def getNextPage(parser):
for url in parser.urls:
if url.find("serie=") != -1:
return url
def parserURL(url):
htmlSource = retrieve(url)
parser = urllister.URLLister()
parser.feed(htmlSource)
parser.close()
return parser
host = "http://www.mangavolume.com"
manga = "/addicted-to-curry/"
chapter = "chapter-addicted-to-curry-1/"
print "Starting..."
parse = parserURL(host + manga + chapter)
cekImage(parse)
next = getNextPage(parse)
while next != "":
parse = parserURL(host + next)
cekImage(parse)
next = getNextPage(parse)
Kode di atas saya simpan dengan nama mangavolume.py. Pada kode diatas ada modul yang diimpor yang tidak ada di Python, karena modul itu buatan sendiri. Idenya di ambil dari http://diveintopython.org/. Hanya saja sudah saya modifikasi agar sesuai dengan kebutuhan. Kodenya tampak seperti di bawah ini. Kode dibawah saya simpan dengan nama urllister.py.
from sgmllib import SGMLParser
class URLLister(SGMLParser):
def reset(self):
SGMLParser.reset(self)
self.urls = []
self.options = []
self.images = []
def start_a(self, attrs):
href = [v for k, v in attrs if k=='href']
if href:
self.urls.extend(href)
def start_option(self, attrs):
option = [v for k, v in attrs if k=='value']
if option:
self.options.extend(option)
def start_img(self, attrs):
image = [v for k, v in attrs if k=='src']
if image:
self.images.extend(image)
Karena saya membuat kode diatas cuma iseng, fitur-fiturnya masih dasar banget. Kalo ada yang ingin mengembangkannya, saya persilahkan untuk melakukannya. Jika berkenan, mohon untuk mencantumkan blog ini sebagai asal kode yang anda kembangkan. Happy hacking.