Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

selenyum lu web

Başlatan muhittin_kaplan, 30 Ocak 2020, 13:26:46

muhittin_kaplan

Bu bir deneme çalışması ama belkide işinize yarar. Sarı web sayfasındaki sonuçların fiyatlarını alıp lineer reg ile fiyat analizi yapıyor.

chromedriver i https://chromedriver.chromium.org/getting-started dan indirebilirsiniz.
Projenin çalışması için modüllerin yüklü olması gerekir. Bunu anaconda framework ile hızlıca yapabilirsiniz. (https://anaconda.org/)

from tqdm import tqdm
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.chrome.options import Options
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome(executable_path='path/chromedriver',options=chrome_options)

url="https://www.sahibinden.com/citroen-c5"
driver.get(url)
driver.wait = WebDriverWait(driver, 5)
try:
    sayfaSayisi=driver.find_elements_by_class_name("mbdef")[0]
    sayfaSayisiVal=sayfaSayisi.text
    sayfaSayisiVal=int(sayfaSayisiVal.split()[1])
except IndexError:
    sayfaSayisiVal=1

fiyatlar=[]
print( url.find('?'))
if url.find('?')==-1:
    paging = "?pagingOffset="
else:
    paging = "&pagingOffset="

try:
    for sayfa in tqdm(range(sayfaSayisiVal)):


        nurl=url+paging+str(sayfa*20)
        driver.get(nurl)
        driver.wait = WebDriverWait(driver, 5)
        araclar = driver.find_elements_by_class_name("searchResultsItem")
        for i in araclar:
            aracFiyatlari=i.find_elements_by_class_name("searchResultsPriceValue")
            if aracFiyatlari.__len__()==1:
                fiyatlar.append(float(aracFiyatlari[0].text.split()[0]))
except:
    pass
driver.wait = WebDriverWait(driver, 5)
driver.close()

x=np.arange(0,len(fiyatlar))
A = np.vstack([x, np.ones(len(x))]).T
m, c = np.linalg.lstsq(A, fiyatlar, rcond=None)[0]
plt.plot(x, m*x + c, 'r', label='Fitted line')
plt.scatter(x=x,y=fiyatlar)
print(x.max())
plt.title(url+"\nToplam:"+str(fiyatlar.__len__()))
plt.show()

#driver.save_screenshot("test.png")