Фото Миики Лааксонен на Unsplash
Что такое манга?
Манга (漫画, manga ) – комиксы или Графические романы создан в Япония или используя Японский язык и в соответствии с стилем, развитым в Японии в конце 19 -го века. У них долгая и сложная предварительная история в более раннем Японское искусство Анкет
Допустим, манга – это японские комиксы, которые более популярны и интересны, чем большинство основных комиксов.
Разведка
Давайте изучим некоторую сеть и получим некоторую ценность вместо того, чтобы просто получить данные, дайте нам скачать немного манги из Интернета и попытаться прочитать ее.
Чтение манги онлайн легко, вы просто посещаете какой -то сайт, например, Mangapanda.com Поиск по некоторым комиксам и прочитайте его. Что если вы хотите загрузить всю комикс сжатие каждой главы к определенному тому и прочитать ее в автономном режиме.
Когда мы идем на Mangapanda.com и ищем конкретный комикс, такой как Наруто, вот какой URL мы направлены
Обратите внимание на Наруто в конце URL, теперь, если мы перейдем к первой главе Наруто, URL преобразуется в http://www.mangapanda.com/naruto/1 Это просто здорово для нас. Обратите внимание, что этого не происходит со всеми сайтами манга, и следите за этим, прежде чем пытаться вырвать любой другой сайт манги. Мы пытаемся скачать изображения, которые существуют в Наруто, глава 1
Давайте напишем небольшую функцию, чтобы получить изображение из URL -адреса
Хорошо, что здесь происходит. Для _download_image мы даем URL, скажем, Mangapanda.com/naruto/1/3 Согласно нашему наблюдению, мы загружаем изображение 3 Наруто. Давайте разбим функцию и поймем, что происходит для каждой строки.
requests.get Загрузите источник данного URL
Преобразовать документ HTML -исходный код в LXML HTML Tree Это помогает нам легко анализировать теги
Получите теги с IMG с выражением, гарантирует это.
“.//img [ @ID ]/@src “
После того, как мы получим URL -адрес, загрузите изображение с помощью запросов.
Загрузка всей главы
Хорошо, что главы в формате/главе/page_number Так как мы можем загрузить все изображения конкретной главы, если мы не знаем конечный номер главы. Если мы знаем окончательную главу, мы можем просто использовать диапазон и цикл по номеру изображения для загрузки.
Если мы видим исходный код, есть этот интересный тег.
Там написал это, чтобы пользователи могли выбрать номер страницы в форме выпадения. Мы можем использовать дерево формата LXML для этого .//* [@id]/option [last ()]/text () и получить последнее событие идентификатора Pagemenu, которая является конечной страницей главы.
Давайте написать обернуть это в небольшую функцию
Теперь мы знаем номера страниц глав, которые мы собираемся скачать. Мы можем просто получить все изображения из главы параллельно, отсортировать их, а затем сжать их, чтобы сделать один том.
Давайте использовать ThreadPoolexeCutor и написать асинхронную функцию для следующей работы.
properties = json.load(open("configs.json")) base_url = properties.get("base_url") + "/" + properties.get("manga_name")
Мы можем определить Manga_name и Base_url в configs.json, чтобы нам не приходилось давать имя манги каждый раз, когда мы загружаем главу.
Функция download_chapter создает каталоги на основе Manga_Name и Number № Главы
➜ naruto git:(master) ✗ tree . └── 1 ├── 1.jpg ├── 10.jpg ├── 11.jpg
Теперь, когда мы скачали все страницы в главе. Давайте сжимаем его в формате CBZ и убедитесь, что порядок номеров страниц сортируется должным образом
Мы можем обернуть все классическим Главный так что, если мы дадим номер главы, мы скачаем весь комикс
в действии
Мы можем запустить сценарий следующим образом
Отказ от ответственности: это только для чистой образовательной цели. Не используйте это коммерчески для пиратства или для атаки Mangapanda.com
Оригинал: “https://dev.to/vinaybommana7/reading-manga-with-python-c15”