Hi Nguyễn Thành Trung.
https://github.com/Al2O3-Cr/downloadManga
Mình có lấy code của bạn và viết thêm một ít.
#!/usr/bin/python3
from importlib import import_module
def loadModule(link):
if "http://" in link:
link = link[7:]
elif "https://" in link:
link = link[8:]
return import_module("{}_com".format(link[:link.find("com") - 1]))
#Load module có tên dặt theo tên trang.
def download(link):
module = loadModule(link)
for link in module.getLinkChap(link):
module.saveImg(link)
#Mỗi module có một phương thức getLinkChap để lấy link cháp và saveImg để tải ảnh trong đó về.
download("http://truyentranhtuan.com/relife/")
#!/usr/bin/python3
from common import *
BLOGTRUYEN = 'http://blogtruyen.com/'
def getLinkChap(link):
blogtruyenRequest = requests.get(link)
HTML = blogtruyenRequest.text
regexTitle = r'<title>.+\|'
matchTitle = re.search(regexTitle, HTML)
if matchTitle.group() is not None:
title = matchTitle.group().replace('<title>', '').rstrip('|').rstrip()
else:
title = 'Unknown'
divListChapter = besoup(HTML, 'lxml')
chapters = divListChapter.find(id='list-chapters')
chapters = chapters.find_all('p')
num = len(chapters)
print('\n-> Detect\nWeb:', BLOGTRUYEN, '\nManga: ', title, '\nChaps:', num)
data = []
for chap in chapters:
tempData = {}
temp = chap.find('a')
tempData['href'] = BLOGTRUYEN + temp['href']
tempData['title'] = temp['title']
data.append(tempData)
return data
def saveImg(data):
print('Title:', data['title'], '\nLink:', data['href'])
filename = '-'.join(data['title'].split())
req = requests.get(data['href'])
HTML = req.text
source = besoup(HTML, 'lxml')
article = source.find(id='content')
imgs = article.find_all('img')
files = []
print('{}\nDownloading...'.format('-' * 50))
for no, img in enumerate(imgs):
fileExtension = img['src'].split('?')[0].split('.')[-1]
try:
name = filename + '-' + str(no) + '.' + fileExtension
files.append(download.urlretrieve(img['src'], name)[0])
print('Loaded', name, 'Successfully!')
except KeyboardInterrupt:
exit()
except:
print('Missed %r' %(filename + '-' + str(no) + '.' + fileExtension))
zipf = zipfile.ZipFile(filename + '-' + "blogtruyen.com" + '.zip', 'w', zipfile.ZIP_DEFLATED)
print('Zipping...')
zipFile(zipf, files)
zipf.close()
print('Done!')
Khi thêm một trang mới thì không cần sửa lại code mà chỉ cần viết thêm một file dơnload nữa.