import time
import base64
from PIL import Image
from io import BytesIO
from urllib.request import urlretrieve
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Firefox()
driver.get("https://m...content-available-to-author-only...o.jp/viewer/1007477") # Open chapter
settings = WebDriverWait(driver, 10).until(EC.presence_of_element_located(
(By.XPATH, "//div[starts-with(@class, 'Navigation-module_settingsContainer_')]"))) # Find settings button with wait
settings.click() # Open settings
driver.find_elements_by_xpath("//div[starts-with(@class, 'Modal-module_quarity_')]")[2].click() # Set image quality
settings.click() # Open settings again
driver.execute_script('document.querySelector("input#mode-horizontal").removeAttribute("disabled")') # Endble horizontal if it disabled
driver.execute_script('document.querySelector("input#mode-horizontal").click()') # Turn into horizontal mode
title = WebDriverWait(driver, 10).until(EC.presence_of_element_located(
(By.XPATH, '/html/body/div/div[2]/div[2]/div[3]/div[1]/div[2]/a/h1'))).text # Wait for page load after refresh
chapter = driver.find_element_by_xpath('/html/body/div/div[2]/div[2]/div[3]/div[1]/div[2]/div/p').text[1:]
time.sleep(2)
img = driver.find_element_by_class_name('zao-image')
b64 = driver.execute_script('''function getBase64Image(img)
{
var canvas = document.createElement("canvas");
canvas.width = img.width;
canvas.height = img.height;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0);
var dataURL = canvas.toDataURL("image/png");
return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
}
return getBase64Image(arguments[0])
''',
img)
image_data = base64.b64decode(b64)
with open('pic.png', 'wb') as f:
f.write(image_data)