как почистить ссылку на изображение галереи товара на BeautifulSoup - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь очистить URL-адрес галереи продуктов с этого сайта, используя BeautifulSoup4 https://www.daraz.com.bd/products/awei-y336-portable-wireless-bluetooth-mini-speaker-charging-cable-i128428097-s1048302559.html?search=1, но я не могу найти никакого способа. Некоторые продукты имеют 3 изображения, а некоторые имеют больше. enter image description here

Может кто-нибудь сказать мне, как я буду очищать URL галереи изображений с помощью BeautifulSoup?

вот мой код

from selenium import webdriver
from bs4 import BeautifulSoup
browser = webdriver.Chrome()
browser.get("https://www.daraz.com.bd/products/awei-y336-portable-wireless-bluetooth-mini-speaker-charging-cable-i128428097-s1048302559.html?search=1")

soup = BeautifulSoup(browser.page_source, "html.parser")
container = soup.find_all("body")
for items in container:
        title = items.find("div",{"class":"pdp-product-title"}).text
        price = items.find('span', attrs={'class':'pdp-price'}).text.strip(" ৳")
        print(title,price)
browser.quit()

1 Ответ

0 голосов
/ 21 марта 2020

Что ж, эту страницу сложно обработать, потому что она содержит информацию, которую вы хотите встроить в большой (JavaScript) код. Хорошо, что изображения легко идентифицировать, потому что они имеют шаблон: https://static-01.daraz.com.bd/p/ \ w + .jpg, поэтому мы можем использовать регулярное выражение для извлечения этих URL-адресов. Проблема в том, что, вероятно, вы получите больше изображений, которые хотите, если вы не сделаете больше фильтров, чтобы получить именно то, что вы хотите. Это способ сделать это, остальное на вас:

import requests
import json
import re
import urllib 
import os

url = 'https://www.daraz.com.bd/products/awei-y336-portable-wireless-bluetooth-mini-speaker-charging-cable-i128428097-s1048302559.html?search=1'
resp1 = requests.get(url)
text = resp1.text
images = list(set(re.findall(r"https://static-01.daraz.com.bd/p/\w+.jpg", text)))
for i, img in enumerate(images):
    urllib.request.urlretrieve(img, filename=f'img{i}.jpg')
...