01/10/2018, 17:20

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:

  • requests
  • re
  • zipfile
  • os
  • shutil
  • threading
  • jsbeautifier
  • bs4-BeautifulSoup

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

Chien Dang viết 19:33 ngày 01/10/2018

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

Henry viết 19:23 ngày 01/10/2018

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

Tao Không Ngu. viết 19:23 ngày 01/10/2018

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

Henry viết 19:34 ngày 01/10/2018

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

Tynk Huynk viết 19:34 ngày 01/10/2018

Python có lib để zip file hả ?

Henry viết 19:31 ngày 01/10/2018

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

Đào An viết 19:23 ngày 01/10/2018

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

Henry viết 19:29 ngày 01/10/2018

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

Phan Bá Hải viết 19:28 ngày 01/10/2018

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

Henry viết 19:33 ngày 01/10/2018

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

Dark.Hades viết 19:37 ngày 01/10/2018

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

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

Henry viết 19:33 ngày 01/10/2018
  • Đó là lí do nhiều người sử dụng Python libs đồ sộ
  • Auto crawl data là như thế nào nhỉ, vẫn chưa hiểu được ý tưởng
Dark.Hades viết 19:26 ngày 01/10/2018

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.

Đào An viết 19:25 ngày 01/10/2018

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

Dark.Hades viết 19:26 ngày 01/10/2018

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ở

Henry viết 19:33 ngày 01/10/2018

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

Tao Không Ngu. viết 19:27 ngày 01/10/2018

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.

Đỗ Nhiên viết 19:32 ngày 01/10/2018

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 đó

Henry viết 19:26 ngày 01/10/2018

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 nên mình không thể gộp chung được

Henry viết 19:30 ngày 01/10/2018

Chính xác rồi đó.

Bài liên quan
0