В настоящее время я занимаюсь проектом по соскобу в Интернете, который заключается в том, чтобы отсканировать продукты с веб-сайта Delhaize, их цены и возможные скидки. Используя мой код, я получаю правильное количество продуктов, однако есть некоторые продукты без цен и скидок, и в противовес этому я пытаюсь go продукт за продуктом, чтобы попытаться найти правильное количество цен продукта. Тем не менее, я никогда не получаю правильную сумму, имея слишком много или слишком мало.
Не могли бы вы мне помочь? Мой код ниже:
import pandas as pd
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.proxy import Proxy, ProxyType
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
from selenium.common.exceptions import NoSuchElementException
from datetime import datetime
import time
myProxy = {
"http" : "http://10.120.118.49:8080",
"https" : "https://10.120.118.49:8080"
}
headers={'User-agent' : 'Mozilla/5.0'}
Product=[]
Price=[]
Discount=[]
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument("--proxy-server=http://10.120.118.49:8080")
chrome_options.add_argument("--headless")
driver = webdriver.Chrome(executable_path='C:/Users/C71220/chromedriver.exe', options=chrome_options)
for u in range(0,6):
url='https://www.delhaize.be/nl-be/shop/Dranken-en-alcohol/c/v2DRI?q=:relevance:manufacturerNameFacet:Coca-Cola:manufacturerNameFacet:Schweppes:manufacturerNameFacet:Fanta:manufacturerNameFacet:Chaudfontaine&sort=relevance&pageNumber=' + str(u)
driver.get(url)
try:
# makes the scraper wait until the element is loaded on the website
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.CLASS_NAME, 'data-item')))
for products in driver.find_elements_by_xpath("//div[@class='description anchor--no-style']"):
Product.append(products.text.strip('\n'))
product=driver.find_elements_by_xpath("//div[@class='layout-basket-area']")
for i in product:
prices=i.find_elements_by_xpath("//span[@class='quantity-price super-bold']")
for a in prices:
if a is not None:
Price.append(a.text)
else:
Price.append('')
promotions=i.find_element_by_xpath("//div[@class='PromotionStickerWrapper']")
if promotions is not None:
Discount.append(promotions)
else:
Discount.append(promotions)
print('Scraping...')
except (NoSuchElementException, TimeoutException):
pass
print(Product, Price, Discount)
print(len(Product))
print(len(Price))
print(len(Discount))
РЕДАКТИРОВАТЬ:
Код HTML для цены ниже:
<div class="layout-basket-area"...<div>
<span class="quantity-price super-bold">
А для скидки:
<div class="layout-basket-area"...<div>
<div class="layout-shot">...<div>
<div class="PromotionStickerWrapper"> title="- 25% voor 2">