Можно ли как-то получить больше информации за раз при парсинге?

хочу скачать кучу сетов фотографий, но проблема, каждое фото сета находится на "разных" страницах.

И прямые ссылки на картинку, имеют хаотичные названия. Например: ...2t4tppc.jpg ,...1h7looe.jpg,...11ozv72.jpg.

Из-за этого приходится парсить каждую страницу и это занимает огромное количество времени. Соответветсвенно есть ли способ за раз получить список всех изображений? М.б он где-то хранится

Примерный код: Медленно, попорядку парсит каждое фото отдельно и сохраняет в фаил. Читал ещё по мультипоточность немного, но может есть ещё способы?

from bs4 import BeautifulSoup as bs
import requests
import csv

clerdatalinks = []
final = []
a = 1
with open("/home/..../links.csv") as fp:
    reader = csv.reader(fp)
    datalinks = [row for row in reader]
print(len(datalinks))

    

for  element in datalinks:
    print(a)
    a +=1
    pars = requests.get(element[0],stream = True, headers={'User-Agent': 'XYZ/3.0'})
    soup0 = bs(pars.text,"html.parser")
    
    NumberFoto = soup0.findAll('a',class_ = 'on-popunder page-numbers')
    Name = soup0.findAll('a',class_ = 'on-popunder', rel="category tag")
    NameSet = soup0.findAll('h2',class_ = 'main-title')
    allinks = []
    print(element[0])
    if NumberFoto == []:
        print("это не сет")
    else:
        link0 = element[0]            # Ссылка на сет
        name = Name[-1].text           # Имя модели 
        n = int(NumberFoto[-1].text)   # Сколько фото
        nameSet = NameSet[0].text      # Название сета
        allinks.append(name)
        allinks.append(nameSet)
        for x in range(1,n+1):
            url = link0 + "/" + str(x)
            page = requests.get(url,stream = True, headers={'User-Agent': 'XYZ/3.0'})
            soup = bs(page.text,"html.parser")
            allfoto = soup.findAll('img',class_ = 'blur')
            link = allfoto[0].get("src")
            allinks.append(link)
        with open('/home/alex/AutoSave/Texts/exp.csv','a') as fp:
            writer = csv.writer(fp)
            writer.writerow(allinks)

Ответы (1 шт):

Автор решения: Sergei Malanin

Почитай про Scrappy . Он из коробки умеет многопоточность. Но посложнее будифулсупа.

Либо еслли не хочеш новый фреймворк учить можеш распаралелить процес. Тогда тебе вот это поможет Joblib

→ Ссылка