Skip to content

Instantly share code, notes, and snippets.

@me-suzy
Created September 14, 2024 06:53
Show Gist options
  • Save me-suzy/a1ec425d6881622b3d3096880890c95b to your computer and use it in GitHub Desktop.
Save me-suzy/a1ec425d6881622b3d3096880890c95b to your computer and use it in GitHub Desktop.
Download books
import os
import time # Adăugăm importul pentru modulul time
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
# Utilizarea Selenium Manager pentru a gestiona driverul corect
service = Service()
# Opțiuni pentru Chrome
chrome_options = Options()
chrome_options.add_argument('--start-maximized')
# Inițializează driver-ul Chrome
driver = webdriver.Chrome(service=service, options=chrome_options)
# URL-ul cărții de pe Google Books
url = 'https://www.google.ro/books/edition/Valori_clasice/1wsYAAAAMAAJ?hl=ro&gbpv=1'
# Deschide pagina cărții în browser
driver.get(url)
# Directorul unde vor fi salvate imaginile
save_directory = 'D:\\Books\\Valori_clasice'
if not os.path.exists(save_directory):
os.makedirs(save_directory)
# Așteaptă să se încarce pagina complet
time.sleep(3)
# Descarcă toate imaginile din pagină
while True:
# Preluăm HTML-ul paginii și îl parsăm
soup = BeautifulSoup(driver.page_source, 'html.parser')
# Găsește toate imaginile vizibile din carte
images = soup.find_all('img')
# Descărcăm imaginile găsite
for index, img in enumerate(images):
img_url = img['src']
if img_url.startswith('http'):
img_data = requests.get(img_url).content
img_path = os.path.join(save_directory, f'page_{index}.jpg')
if not os.path.exists(img_path):
with open(img_path, 'wb') as img_file:
img_file.write(img_data)
print(f'Descărcată pagina {index}')
# Simulează click pe butonul pentru a naviga la pagina următoare
try:
next_button = driver.find_element('xpath', "//button[contains(@aria-label, 'Pagina următoare')]")
next_button.click()
time.sleep(3) # Așteaptă să se încarce pagina următoare
except:
print("Nu s-au găsit mai multe pagini sau a fost atinsă ultima pagină.")
break
# Închide browserul
driver.quit()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment