Arkadaşlar,
Claude kodlama yaparken hep yarıda kesiyor ve girinti hatası oluyor python için...
Çok uzun kodlarda da Chatgpt yarım kesiyor, bozuyor...
PYTHON
NODEJS
için ayrı ayrı en iyi ai kodlama aracı hangisidir? Sıfır kodlama bilgisi için.
Yapay Zeka (AI) Uzmanlarına : KODLAMA (SADECE UZMANLAR!)
10
●530
- 27-04-2025, 00:02:42Claude, Maks 1000 satır sonra birden duruyor.... Devam diyince python için girinti (boşluk) hataları olusuyor; çünkü boşluksuz başlıyor.Saitama adlı üyeden alıntı: mesajı görüntüle
- 27-04-2025, 00:08:02Claude 3.7 sonnet kullanıyorum yaşamadım belkide prodan dolayıdıranilguler adlı üyeden alıntı: mesajı görüntüle
- 27-04-2025, 00:08:48Deneyeceğim çok teşekkürlerlookout adlı üyeden alıntı: mesajı görüntüle
- 27-04-2025, 00:18:01Python ile bot yazımı yapıyorsanız, selenium ile yapmasını isteyin. Ayrıca hangi veriyi nereden alacağını da ona mutlaka söyleyin.
Örneğin hepsiburada.com ürün sayfasından ürün verilerini çekerken, ürün adına sağ tıklayıp, incele deyin. Sonra sağda bir bölüm açılacak, buradan ürün adının metin halini bulup sağ tıklayın, kopyalanın altında xpath'ı kopyala olmalı. Benim tarayıcı İngilizce olduğundan aşağıdaki şekilde görünüyor. Ürün adını bu xpath ile alabileceğini söyleyin.

Örnek bot prompt:
Hepsiburada ürün url'sinden ürün bilgilerini ekrana yazdıran bir python betik yaz. Selenium kullan. Alman gereken verileri xpath olarak aşağıya ekledim: Ürün adı: //*[@id="container"]/div/main/div/div/div[2]/section[1]/div[2]/div[1]/div[1]/h1/text() Marka: //*[@id="container"]/div/main/div/div/div[2]/section[1]/div[2]/div[1]/div[1]/h1/a Satıcı: //*[@id="container"]/div/main/div/div/div[2]/section[1]/div[2]/div[2]/div[1]/a/span Fiyat: //*[@id="container"]/div/main/div/div/div[2]/section[1]/div[2]/div[3]/div/div[1]/div[1]/span/text()[1]
Örnek kod:
import time from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.common.exceptions import NoSuchElementException, TimeoutException def get_hepsiburada_product_info(url): """ Verilen Hepsiburada ürün URL'sinden ürün bilgilerini çeker. Args: url (str): Hepsiburada ürün sayfası URL'si. Returns: dict: Ürün bilgilerini içeren bir sözlük (product_name, brand, seller, price) veya bir hata oluşursa None. """ product_info = { "product_name": None, "brand": None, "seller": None, "price": None, "url": url } # XPath'ler (Kullanıcı tarafından sağlananlar) # Not: XPath'ler zamanla değişebilir! xpath_product_name_h1 = '//*[@id="container"]/div/main/div/div/div[2]/section[1]/div[2]/div[1]/div[1]/h1' xpath_brand_link = '//*[@id="container"]/div/main/div/div/div[2]/section[1]/div[2]/div[1]/div[1]/h1/a' xpath_seller = '//*[@id="container"]/div/main/div/div/div[2]/section[1]/div[2]/div[2]/div[1]/a/span' # Fiyat XPath'i için genellikle ana fiyat konteynerini hedeflemek daha güvenilirdir. # Kullanıcının verdiği XPath'deki span'ı hedefleyelim: xpath_price_span = '//*[@id="container"]/div/main/div/div/div[2]/section[1]/div[2]/div[3]/div/div[1]/div[1]/span' # --- WebDriver Kurulumu --- options = webdriver.ChromeOptions() # options.add_argument('--headless') # Tarayıcıyı arka planda çalıştırmak için # options.add_argument('--disable-gpu') # Headless mod için bazen gerekli options.add_argument('--start-maximized') # Tam ekran başlatma options.add_argument('--log-level=3') # Konsola daha az Selenium logu basması için options.add_experimental_option('excludeSwitches', ['enable-logging']) # Konsoldaki Device Rtc.. logunu gizler driver = None # Hata durumunda quit() çağrılabilmesi için başta None atayalım try: print("WebDriver başlatılıyor...") service = Service(ChromeDriverManager().install()) driver = webdriver.Chrome(service=service, options=options) print(f"Sayfa yükleniyor: {url}") driver.get(url) # Sayfanın yüklenmesi için bekleme süresi (gerekirse artırılabilir) wait = WebDriverWait(driver, 15) # 15 saniye kadar bekle print("Ürün bilgileri çekiliyor...") # --- Veri Çekme --- # Marka (Genellikle H1 içindeki link) try: brand_element = wait.until(EC.presence_of_element_located((By.XPATH, xpath_brand_link))) product_info["brand"] = brand_element.text.strip() except (NoSuchElementException, TimeoutException): print(f"Uyarı: Marka bulunamadı (XPath: {xpath_brand_link})") except Exception as e: print(f"Marka çekilirken beklenmedik hata: {e}") # Ürün Adı (H1 elementinin tamamı - Markayı daha sonra çıkarmayı deneyebiliriz) try: # H1 elementinin görünür olmasını bekleyelim h1_element = wait.until(EC.visibility_of_element_located((By.XPATH, xpath_product_name_h1))) full_name = h1_element.text.strip() # Eğer marka bulunduysa ve isim markayla başlıyorsa, markayı çıkar if product_info["brand"] and full_name.startswith(product_info["brand"]): product_info["product_name"] = full_name[len(product_info["brand"]):].strip() else: product_info["product_name"] = full_name # Marka yoksa veya başta değilse, tam ismi al except (NoSuchElementException, TimeoutException): print(f"Uyarı: Ürün adı (H1) bulunamadı (XPath: {xpath_product_name_h1})") except Exception as e: print(f"Ürün adı çekilirken beklenmedik hata: {e}") # Satıcı try: seller_element = wait.until(EC.presence_of_element_located((By.XPATH, xpath_seller))) product_info["seller"] = seller_element.text.strip() except (NoSuchElementException, TimeoutException): # Bazen satıcı farklı bir yapıda olabilir, alternatif kontrol edilebilir. # Örnek: Satıcı Hepsiburada ise link olmayabilir. try: # Alternatif XPath (Satıcı Hepsiburada olduğunda link olmayabilir) xpath_seller_alt = '//*[@id="container"]/div/main/div/div/div[2]/section[1]/div[2]/div[2]/div[1]/span[2]' seller_element = wait.until(EC.presence_of_element_located((By.XPATH, xpath_seller_alt))) product_info["seller"] = seller_element.text.strip() except (NoSuchElementException, TimeoutException): print(f"Uyarı: Satıcı bulunamadı (XPathler: {xpath_seller}, {xpath_seller_alt})") except Exception as e_alt: print(f"Alternatif satıcı çekilirken beklenmedik hata: {e_alt}") except Exception as e: print(f"Satıcı çekilirken beklenmedik hata: {e}") # Fiyat try: # Fiyat elementinin içeriği değişebileceği için görünür olmasını beklemek daha iyi price_element = wait.until(EC.visibility_of_element_located((By.XPATH, xpath_price_span))) # Bazen fiyat birden fazla span içinde veya text node'larında olabilir. # Sadece elementin text'ini almak genellikle işe yarar. product_info["price"] = price_element.text.strip() # Eğer fiyat boşsa veya sadece 'TL' gibi bir şeyse, içindeki diğer elementleri kontrol et if not product_info["price"] or product_info["price"].lower() == "tl": # Fiyat genellikle 'data-bind' veya script içinde de olabilir, # ancak XPath ile almak daha basit. İç içe span'leri deneyelim. try: # Fiyat genellikle bu span içindeki başka bir yerde olabilir actual_price = driver.execute_script("return arguments[0].innerText;", price_element) product_info["price"] = actual_price.strip() if actual_price else None except Exception as inner_e: print(f"Fiyat içeriği alınırken ek hata: {inner_e}") except (NoSuchElementException, TimeoutException): print(f"Uyarı: Fiyat bulunamadı (XPath: {xpath_price_span})") # Fiyat bazen farklı bir id ile (örn: 'offering-price') olabilir. Kontrol edilebilir. try: xpath_price_alt = '//*[@data-test-id="product-price"]' # Daha genel bir seçici price_element_alt = wait.until(EC.visibility_of_element_located((By.XPATH, xpath_price_alt))) product_info["price"] = price_element_alt.text.strip() if not product_info["price"]: # İçeriği script ile almayı dene actual_price = driver.execute_script("return arguments[0].innerText;", price_element_alt) product_info["price"] = actual_price.strip() if actual_price else None except (NoSuchElementException, TimeoutException): print(f"Uyarı: Alternatif fiyat da bulunamadı (XPath: {xpath_price_alt})") except Exception as e_alt: print(f"Alternatif fiyat çekilirken beklenmedik hata: {e_alt}") except Exception as e: print(f"Fiyat çekilirken beklenmedik hata: {e}") return product_info except Exception as e: print(f"Genel bir hata oluştu: {e}") return None finally: # --- Tarayıcıyı Kapat --- if driver: print("Tarayıcı kapatılıyor.") driver.quit() # --- Betiği Çalıştırma --- if __name__ == "__main__": # Test için örnek bir Hepsiburada URL'si (İstediğiniz URL ile değiştirin) # test_url = "https://www.hepsiburada.com/apple-iphone-15-pro-max-256-gb-natural-titanium-p-HBCV00004YQSY7" # test_url = "https://www.hepsiburada.com/logitech-m171-kablosuz-mouse-siyah-910-004424-p-BD804667" test_url = input("Lütfen Hepsiburada ürün URL'sini girin: ") if "hepsiburada.com" not in test_url: print("Lütfen geçerli bir Hepsiburada URL'si girin.") else: start_time = time.time() product_data = get_hepsiburada_product_info(test_url) end_time = time.time() if product_data: print("n--- Ürün Bilgileri ---") print(f"URL: {product_data['url']}") print(f"Ürün Adı: {product_data['product_name'] if product_data['product_name'] else 'Bulunamadı'}") print(f"Marka: {product_data['brand'] if product_data['brand'] else 'Bulunamadı'}") print(f"Satıcı: {product_data['seller'] if product_data['seller'] else 'Bulunamadı'}") print(f"Fiyat: {product_data['price'] if product_data['price'] else 'Bulunamadı'}") print("----------------------") print(f"İşlem süresi: {end_time - start_time:.2f} saniye") else: print("nÜrün bilgileri alınamadı.")
- 27-04-2025, 00:19:06

