Редактировать: после обсуждения следующее получает начальные URL продукта, исключая заполнители, и посещает каждую страницу в поисках наибольшего изображения. Самое большое изображение имеет атрибут ['data-large_image']
.
Я использую Session
для эффективности с повторным использованием соединения.
import requests
from bs4 import BeautifulSoup as bs
url = 'http://zegetron.gr/b2b/product-category/pc/?products-per-page=all'
images = []
with requests.Session() as s:
r = s.get(url)
soup = bs(r.content, 'lxml')
product_links = [item.select_one('a')['href'] for item in soup.select('.product-wrapper') if item.select_one('[src]:not(.woocommerce-placeholder)')]
for link in product_links:
r = s.get(link)
soup = bs(r.content, 'lxml')
images.append(soup.select_one('[data-large_image]')['data-large_image'])
Предыдущий ответ (на основе оригинального единого URL со всеми продуктами):
Попробуйте следующее, чтобы найти атрибут srcset
в каждом листинге. Если он присутствует, он берет последнюю указанную ссылку src
(так как они упорядочены по возрастанию), в противном случае берется атрибут src
.
from bs4 import BeautifulSoup as bs
import requests
r = requests.get('http://zegetron.gr/b2b/product-category/pc/?products-per-page=all')
soup = bs(r.content, 'lxml')
listings = soup.select('.thumb-wrapper')
images = []
for listing in listings:
link = ''
if listing.select_one(':has([srcset])'):
links = listing.select_one('[srcset]')['srcset']
link = links.split(',')[-1]
link = link.split(' ')[1]
else:
if listing.select_one('[src]:not(.woocommerce-placeholder)'):
link = listing.select_one('img[src]')['src']
if link:
images.append(link)
print(images)