Merhaba arkadaşlar.
Python da request kütüphanesi ile bir siteden jpg linki almak istiyorum.Başka sayfalarda alıp bunu resim olarak telegram botuma atıyorum.Ama başka bir sitede resmin jpg linkini request ile alamadım.
normal tarayıcıda a etiketinin hrefinde jpg dosyasının linkini veriyor. Ama ben requests ile çektiğimde href de javascript yazıyor linki vermiyor Yardımcı olursanız çok sevinirim.Teşekkürler.
Normal tarayıcı:
<a href="https://cdn03.ciceksepeti.com/cicek/kcm51543257-1/XL/t500-akilli-saat-smart-watch-turkce-menulu-arama-cevaplama-cift-tus-aktif-kcm51543257-1-4b27238aea6d48079a5d43ed0c6735f8.jpg">
<img class="product__image" src="https://cdn03.ciceksepeti.com/cicek/kcm51543257-1/L/t500-akilli-saat-smart-watch-turkce-menulu-arama-cevaplama-cift-tus-aktif-kcm51543257-1-4b27238aea6d48079a5d43ed0c6735f8.jpg" width="582" height="640" alt="T500 Akıllı Saat Smart Watch Türkçe Menülü Arama Cevaplama Çift Tuş Aktif">
</a>
requests ile bana gelen:
<a href="javascript:;">
<img alt="T500 Akıllı Saat Smart Watch Türkçe Menülü Arama Cevaplama Çift Tuş Aktif" class="product__image" height="640" src="//cdn03.ciceksepeti.com/Themes/Ciceksepeti/Assets/images/brokenimage.jpg" width="582"/>
</a>
</div>
Python requests ile href almak
13
●274
- 28-01-2023, 23:31:54soup u BeautifulSoup ile parçalıyorum zaten hocam.diğer sitelerde alıyorum ama çiçeksepeti vermiyor.sıkıntı sadece çiçeksepetindeA.AY adlı üyeden alıntı: mesajı görüntüle
- 28-01-2023, 23:53:12request ile çözüm imkanı yok mudur?Hocamethmtrgt adlı üyeden alıntı: mesajı görüntüle
- 28-01-2023, 23:59:44Selenium ve BeautifulSoup kullanarak resmin linkini almaya çalışabilirsiniz. Öncelikle gerekli kütüphaneleri kurmanız gerekir.
pip install selenium pip install beautifulsoup4
Örnek;
from selenium import webdriver from bs4 import BeautifulSoup # Selenium ile tarayıcıyı açıyoruz driver = webdriver.Firefox() driver.get("https://example.com") # Tarayıcıda açılan sayfanın HTML içeriğini alıyoruz html = driver.page_source soup = BeautifulSoup(html, 'html.parser') # Resmin linkini arıyoruz img_tag = soup.find('img', {'class': 'product__image'}) img_link = img_tag['src'] # Tarayıcıyı kapatıyoruz driver.quit() print(img_link)Tarayıcıda açtığı sayfadaki resmin linkini arar ve ekrana yazdırır. Tarayıcı sürücüsünü (webdriver) indirmeniz gerekir. Firefox için geckodriver, Chrome için chromedriver gibi. - 29-01-2023, 00:01:41Tarayıcıya falan gerek yok. script bilgileri de zaten sayfanın içinde yükleniyor hocam. script de aynı yerden alıyor direk kaynak dataLayer içerek javascripttir ordan almak daha mantıklı buyrun
import requests from bs4 import BeautifulSoup import json def find_between(s, start, end): return (s.split(start))[1].split(end)[0] uri = "https://www.ciceksepeti.com/t500-akilli-saat-smart-watch-turkce-menulu-arama-cevaplama-cift-tus-aktif-kcm51543257" headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', } r = requests.get((uri), headers=headers, verify=True) soup = BeautifulSoup(r.content, "html.parser") # sadece scriptleri alıyorum html içinden list_of_scripts = soup.findAll("script") product = "" # scriptlerin içinde bize gerekli olanı buluyoruz for script in list_of_scripts: if "ecomm_pagetype" in script.get_text(): product = find_between(script.get_text(),'dataLayer = [','];') break # script içindeki dict python dict dönüştürdük productdict = json.loads(product) for item in productdict: print(item , productdict[item])Sadece resmi almak istiyorsanız aşağıdaki komutta yeterli
print(productdict['productImage'])