Я пытаюсь создать веб-скребок для веб-сайта (https://pokemondb.net/pokedex/national), который копирует список изображений и сохраняет их в каталоге. Кажется, все работает, за исключением того, что вместо того, чтобы собирать 800+ предметов, которые, как я надеялся, получится, он берет только 12. Я попытался использовать implicit_wait
селена, но, похоже, он не работает. Я хотел бы, чтобы это вычистило каждую фотографию на странице.
Ниже приведен мой код:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
import shutil
import os
import requests
def spritescrape(driver):
sprites_list = driver.find_elements_by_tag_name('img')
sprite_srcs = [sprite.get_attribute('src') for sprite in sprites_list]
return sprite_srcs
def download_images(srcs, dirname):
for index, src in enumerate(srcs):
response = requests.get(src, stream=True)
save_image(response, dirname, index)
del response
def save_image(image, dirname, suffix):
with open('{dirname}/img_{suffix}.jpg'.format(dirname=dirname, suffix=suffix), 'wb') as out_file:
shutil.copyfileobj(image.raw, out_file)
def make_dir(dirname):
current_path = os.getcwd()
path = os.path.join(current_path, dirname)
if not os.path.exists(path):
os.makedirs(path)
if __name__ == '__main__':
chromeexe_path = r'C:\code\Learning Python\Scrapers\chromedriver.exe'
driver = webdriver.Chrome(executable_path=chromeexe_path)
driver.get(r'https://pokemondb.net/pokedex/national')
driver.implicitly_wait(10)
sprite_links = spritescrape(driver)
dirname = 'sprites'
make_dir(dirname)
download_images(sprite_links, dirname)
Я слышал, что некоторые веб-сайты могут быть созданы таким образом, чтобы предотвратить соскоб, и мне интересно, так ли это на этом сайте. Я очень новичок в кодировании, поэтому любая помощь в получении всех изображений будет принята с благодарностью!