Merhaba arkadaşlar ,
Python selenium kullanarak bot yapmaya çalışıyorum fakat 2 tane sorum var.
- Selenium ile sitedeki görselleri nasıl indirebilirim ya da nasıl linklerine ulaşabilirim ?
- Bir websitedeki bir kategoriden veri çekmeye çalışıyorum ilk sayfadaki tüm verileri çektikten sonra sonraki sayfaya gidemiyorum yani
Bu sayfadan veriyi çektim ardından linkteki sayıyı 1 arttırıp
bu sayfaya gitmek istiyorum
https://www.webtekno.com/bilim-haberleri?s=3
sonra bu sayfadaki verileri çekmeye çalışıyorum.
For döngüsü kullanarak şöyle bir şeyler yapmaya çalıştım ama kodlar çalışmıyor
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
basliklar = driver.find_elements_by_css_selector(".content-timeline--underline")
liste_haberler=[]
for i in range(0,5):
link="https://www.webtekno.com/bilim-haberleri?s=" + str(i)
driver.get(link)
for baslik in basliklar:
liste_haberler.append(baslik)
driver.close()
Teşekkürler.
-
driver.close()
for döngüsünün içinde olduğu için ilk linkten sonra driver kapatılıyor
-
liste_haberler.append(baslik)
kısmında baslik
bir WebElement nesnesi, eğer başlığın içerdiği yazıya erişmek istiyorsanız text
niteliğini kullanmanız lazım. Siteyi değiştirdikten sonra da eski siteye ait elementleri kullanamazsınız.
-
basliklar
listesini sadece bir defa oluşturuyorsunuz.
-
https://www.webtekno.com/bilim-haberleri?s=0 ile https://www.webtekno.com/bilim-haberleri?s=1 aynı sayfaya yönlendiriliyor.
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
liste_haberler=[]
for i in range(1,6):
link="https://www.webtekno.com/bilim-haberleri?s=" + str(i)
driver.get(link)
basliklar = driver.find_elements_by_css_selector(".content-timeline--underline")
for baslik in basliklar:
liste_haberler.append(baslik.text)
driver.close()
1 Beğeni
Resimleri indirmeyi ve haber linklerini de ekledim. Aslında selenium elementler için screenshot
metodu sağlıyor ama ne Firefox’da ne de Chrome’da düzgün çalışmadı. Sanırım webtekno sitesi ile alakalı. Bu yüzden resimleri requests ile indiriyorum.
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.keys import Keys
import requests
import os
if not os.path.isdir("resimler"):
os.mkdir("resimler")
def resmi_kaydet(link, dosya_ismi):
response = requests.get(link)
if response.status_code == 200:
with open(dosya_ismi, 'wb') as f:
f.write(response.content)
response.close()
driver = webdriver.Chrome()
liste_haberler=[]
liste_linkler = []
resim_sayısı = 0
for i in range(1,6):
link="https://www.webtekno.com/bilim-haberleri?s=" + str(i)
driver.get(link)
basliklar = driver.find_elements_by_css_selector(".content-timeline--right")
for baslik in basliklar:
liste_linkler.append(baslik.find_element_by_tag_name("a").get_attribute("href"))
liste_haberler.append(baslik.find_element_by_css_selector(".content-timeline--underline").text)
data = baslik.find_element_by_tag_name("img").get_attribute("data-original")
resmi_kaydet(data, "resimler/resim"+str(resim_sayısı)+".png")
resim_sayısı += 1
driver.close()
driver.quit()
1 Beğeni