Download Manga Bằng Python (Final Update 12/08/2017 - Package)

Mấy bữa nay đi học, hôm nay ngó lại code, tiện thể nâng lên Package.
Script download manga bằng Python
Source Code: Github

Requiring Modules:

Để biết rõ thêm, các bạn đọc README.md nhé :wink:

16 Likes

Hay lắm, nhưng bỏ cái link hentaivn đi nhớ :wink:

4 Likes

Đã edit lại theo yêu cầu :smile:

1 Like

Hi Nguyễn Thành Trung.
Mình gửi đóng góp nhé @_@!

2 Likes

Gửi đóng góp là gì vậy :sunny:?

1 Like

Python có lib để zip file hả ? :thumbsup:

2 Likes

Đương nhiên là có chứ ạ :smile:

2 Likes

Làm thêm chỗ nạp proxy nữa:3

1 Like

Em cũng sẽ làm cái đó để có thể load được mấy trang forbiben

1 Like

Tool ngon :laughing:
Mượn ý tưởng để làm web app nhé @thanhtrung2314 :smile:

2 Likes

Này được bà chị gợi ý cho làm :smile: thoải mái về mặt ý tưởng :smile:

3 Likes

Python hỗ trợ nhiều viết nhàn nhỉ, bữa viết cái class crawl anime cho web bằng c++ phê thấy cả 2 bà nội ngoại :grin:

Đóng góp ý tưởng: Auto crawl manga đi mình xin xài ké đỡ phải viết, hehe :))

5 Likes
  • Đó là lí do nhiều người sử dụng Python :smile: libs đồ sộ
  • Auto crawl data là như thế nào nhỉ, vẫn chưa hiểu được ý tưởng
3 Likes

Ví dụ chỉ cần đánh domain của ttt.com, nó tự tìm tất cả truyện trên đó, truyện nào đã down rồi thì kiểm tra tập mới nhất, …

Cái này viết phải quan tâm tới opz thuật toán sao cho chi phí ít nhất, ít rơi vào trường hợp xấu nhất.

2 Likes

Bác này định mở site đọc truyện à ?

2 Likes

Không, mình làm viết tuts thôi, không quản lí được nên trước giờ không dám mở :grin:

2 Likes

Ui, cái này thì hơi căng ấy, dữ liệu các thứ nữa. Mà bác tính làm cho cái gì cơ? Chứ giờ mà nhét vô script này chắc nổ tung :smile:

1 Like

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.

2 Likes

cái này mình nghĩ bạn ấy dùng thư viện beatyfull soup để tách các thành phần html ra sau đó nó sẽ có một đoạn mã script nào đó mà nhận biết được dùng để tải chap truyện đó

2 Likes

Mỗi trang web mình đều lấy cái link đó khác nhau mà, đâu cái nào giống cái nào đâu :smile: nên mình không thể gộp chung được

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?