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")