@SQUICK

Конструкция if не работает в конструкции try?

Здравствуйте, я не часто что то пишу на питоне, да и познания мои не далеко ушли за программу 10 класса.

Недавно мне понадобилось изучить вопрос парсинга. Целью парсинга сайт головоломок, собираю название товара, цену, цвет(из за цвета меняется цена на товар), артикул товара.
Использую Webdriver для того что бы получить центу товара которая обновляется после клика на цвет товара.
BeautifullSoup
А так же на Import'ил много лишнего когда разбирался с капчей или кодировкой текстового файла.

Суть проблемы в том что я делаю генератор ценников что бы часто меняющиеся цены не усложняли работу продавца(моего друга, для него делаю)

На 80 строке сравниваю значения в дб с теми что спарсил что бы заменить их, а так же отправить на генерацию ценника.:
result = cursor.fetchone()
print(result['ART'], result['Cost'], result['Color'])
If( article == result["ART"] and colorofcube == result["Color"] and priceofcube != result["Cost"] ):
    cursor.execute(changeprice, (Cost, ART, Color))
    print(nameofcube, ' Изменил цену с ', result['Cost'], " на ", priceofcube)
    cursor.execute(changeprice, (Cost, ART, Color))
elif(article == result["ART"] and colorofcube == result["Color"] and priceofcube == result["Cost"]):
    print("Ничего не изменилось")

Проверяю с помощью if соответствие артикуля цвета и цены, но вот конструкция находится в Try из за чего все ломается
Моих познаний не хватает что бы понять что сделать, в чем проблема.

Код:
from ast import If
from unittest import result
import requests
from bs4 import BeautifulSoup
import pandas as pd
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import io
import codecs
import time
import pymysql
 
conn = pymysql.connect(host='', port=3306, 
  user='', passwd='', db='')
cursor = conn.cursor()
page=1
options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors-spki-list')
options.add_argument('--ignore-ssl-errors')
browser = webdriver.Chrome('C:\webdr\chromedriver.exe')
codecs = ["cp1252", "cp437", "utf-16be", "utf-16"]
while page<=18:
    src = requests.Session()
    src.max_redirects = 5000
    r = src.get("https://cccstore.ru/catalog/kubiki-rubika/all/?PAGEN_1="+str(page), allow_redirects=True)
    r.encoding = 'utf8'
    soup = BeautifulSoup(r.text, 'html.parser')
    element = soup.find_all('div', class_='card_v2-product')
    if(len(element)):
        for elem in element:
            pages2 = str(page)
            f=io.open("spisok"+pages2+".txt", 'a+', encoding="utf-8")
            price = elem.find('div', 'card_v2-product-price').text+'\n'
            links=elem.find('a', class_='')
            linkss = links.get('href')
            titles = '\n'+elem.find('div', 'card_v2-product-name').text.strip()
            g=src.get("https://cccstore.ru"+str(linkss), allow_redirects=True)
            g.encoding = 'utf8'
            sp=BeautifulSoup(g.text, 'html.parser')
            inf=sp.find_all('div', class_='detail-row-content')
            browser.get("https://cccstore.ru"+str(linkss))
            for info in inf:
                selen = browser.find_elements(By.CLASS_NAME , "detail-offers-item")
                nameofcube=info.find('div','cccstore-header').text.strip()
                article=info.find('div', 'detail-header-article').text
                print(nameofcube+'\n')
                f.write(nameofcube+'\n')                     
                for sel in selen:
                    sel.click()
                    time.sleep(0.5)
                    priceofcube=browser.find_element(By.CLASS_NAME, "detail-price-current").text.replace(" ", "")[:-1]
                    colorofcube=browser.find_element(By.CLASS_NAME, "detail-offers_type_name-value").text
                    try:
                        inshowroom=browser.find_element(By.CLASS_NAME, "detail-remainders-info").text
                    except Exception:
                        inshowroom="0"
                    if(inshowroom == "Также в наличии в шоуруме"):
                        inshowroom="1"
                    else:
                        inshowroom="0"
                    print(priceofcube +" "+ colorofcube+'\n')
                    f.write(priceofcube +" "+ colorofcube+" "+inshowroom+'\n')
                    def ADD(ART, Name, Cost, Color, InShowRoom):
                        conn = pymysql.connect(host='remotemysql.com', port=3306, user='', passwd='', db='',cursorclass=pymysql.cursors.DictCursor)
                        try:
                            with conn.cursor() as cursor:
                                selecter="SELECT ART, Cost, Color FROM cccstore WHERE ART = %s AND Color = %s"
                                changeprice="UPDATE cccstore SET Cost = %s WHERE ART = %s AND Color = %s"
                                cursor.execute(selecter, (article, colorofcube))
                                try:
                                        result = cursor.fetchone()
                                        print(result['ART'], result['Cost'], result['Color'])
                                        If( article == result["ART"] and colorofcube == result["Color"] and priceofcube != result["Cost"] ):
                                            cursor.execute(changeprice, (Cost, ART, Color))
                                            print(nameofcube, ' Изменил цену с ', result['Cost'], " на ", priceofcube)
                                            cursor.execute(changeprice, (Cost, ART, Color))
                                        elif(article == result["ART"] and colorofcube == result["Color"] and priceofcube == result["Cost"]):
                                            print("Ничего не изменилось")
                                finally:
                                        print("Такого товара нет в базе данных", Exception)
                                # sql = "INSERT INTO cccstore (`ART`, `Name`, `Cost`, `Color`, `InShowRoom`) VALUES (%s, %s, %s, %s, %s)"
                                # cursor.execute(sql, (ART, Name, Cost, Color, InShowRoom))
                            conn.commit()
                        except Exception:
                            conn.close()
                    ADD(article, nameofcube, priceofcube, colorofcube, inshowroom)
                time.sleep(0.5)
                print(article+'\n')
                f.write(article+'\n\n')
        page +=1
        pages = str(page)


Ошибки:
62d7830d189e7945017738.png

Заранее извиняюсь если ошибка максимально простая, а я не заметил
  • Вопрос задан
  • 127 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Ломается всё из-за того, что оператора If не существует, только if.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
iMedved2009
@iMedved2009
Не люблю людей
А почему всю эту конструкцию select if exists update else insert в pythonе не заменить на одну простую
INSERT INTO cccstore (ART, Cost, Color) VALUES (?,?,?) ON DUPLICATE KEY UPDATE Cost=?;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект