class Era(RealEstate): def __init__(self) -> None: self.offices = [] self.agents = [] self.browser = Browser() def getOffices(self) -> None: self.browser.goPage("https://www.eragayrimenkul.com.tr/tr-TR/Offices/Search?sorting=monthlytransactionturnover%2c2") sleep(3) endPageButton = self.browser.getElements("//a[@class='page-link']")[-1] self.browser.clickElementWithoutXpath(endPageButton) sleep(2) pageCount = int(self.browser.getElements("//a[@class='page-link']")[-2].text) eraUrl = "https://www.eragayrimenkul.com.tr/tr-TR/Offices/Search?sorting=monthlytransactionturnover%2c2&pager_p=" for page in range(1, pageCount + 1): self.browser.goPage(eraUrl + str(page)) sleep(2) officeInfo = self.browser.getElements("//h3[@class='title']/a") [self.offices.append(office.get_attribute("href")) for office in officeInfo] book = ExcelConnection().connectToExcel() sheet = book.active sheet.append(("Ofis Adi", "Ofis Adresi", "Il - Ilce", "Telefon 1", "Telefon 2", "E-mail", "Website", "Facebook", "Twitter", "Linkedin", "Youtube")) for office in self.offices: self.browser.goPage(office) sleep(2) officeName = self.browser.getElement("//h3[@class='text-center text-md-left']").text officeAddress = self.browser.getElement("//div[@class=' d-flex justify-content-between bg-secondary text-white p-4']/div[@class='content']/p").text officeProvince = self.browser.getElement("//div[@class='col-12 col-md-3 text-white text-center text-lg-right']/h3").text infos = self.browser.getElements("//ul[@class='buttons']/li/div/a") infosLength = len(infos) if infosLength == 3: email = infos[0].text phoneNumber = infos[1].text wpNumber = infos[2].text if infosLength == 2: if "+" in infos[0].text: phoneNumber = infos[0].text wpNumber = "-" email = "-" if "@" in infos[0].text: email = infos[0].text phoneNumber = "-" wpNumber = "-" if "+" in infos[1].text: wpNumber = infos[1].text if "@" in infos[1].text: email = infos[1].text if infosLength == 1: if "+" in infos[0].text: phoneNumber = infos[0].text wpNumber = "-" email = "-" else: email = infos[0].text phoneNumber = "-" wpNumber = "-" socialMedia = self.browser.getElements("//div[@class='d-flex socials mt-2']/a") facebook, twitter, linkedin, youtube = socialMedia[0].get_attribute("href"), socialMedia[1].get_attribute("href"), socialMedia[2].get_attribute("href"), socialMedia[3].get_attribute("href") print(officeName, officeAddress, officeProvince, phoneNumber, wpNumber, email, office, facebook, twitter, linkedin, youtube, sep = "|") sheet.append((officeName, officeAddress, officeProvince, phoneNumber, wpNumber, email, office, facebook, twitter, linkedin, youtube)) book.save("./files/era_offices.xlsx") book.close() def getAgents(self) -> None: self.browser.goPage("https://www.eragayrimenkul.com.tr/tr-TR/OfficeUsers/Search?sorting=monthlytransactionturnover%2c2&pager_p=1") sleep(3) self.browser.execute_script("window.scrollTo(0, document.body.scrollHeight);var lenOfPage=document.body.scrollHeight;return lenOfPage;") endPageButton = self.browser.getElement("//li[@class='page-item']") endPageButton.click() sleep(3) pageCount = int(self.browser.getElements("//ul[@class='pagination']/li")[-2].text) eraUrl = "https://www.eragayrimenkul.com.tr/tr-TR/OfficeUsers/Search?sorting=monthlytransactionturnover%2c2&pager_p=" for page in range(1, pageCount + 1): self.browser.goPage(eraUrl + str(page)) sleep(3) agentInfo = self.browser.getElements("//div[@class='content']/a") [self.agents.append(agent.get_attribute("href")) for agent in agentInfo] book = ExcelConnection().connectToExcel() sheet = book.active sheet.append(("Ofis Adi", "Rolu", "Adi Soyadi", "Telefon 1", "Telefon 2", "E-mail", "Website", "Facebook", "Instagram", "Linkedin", "Twitter", "Youtube")) for agent in self.agents: self.browser.goPage(agent) sleep(2) officeName = self.browser.getElement("//small[@class='form-text mb-2']/a").text.split("@")[1] degree = self.browser.getElement("//small[@class='form-text mb-2']").text.split(" @")[0] name = self.browser.getElement("//h3[@class='text-center text-md-left']").text infos = self.browser.getElements("//ul[@class='buttons']/li/div/a") infosLength = len(infos) if infosLength == 3: email = infos[0].text phoneNumber = infos[1].text wpNumber = infos[2].text if infosLength == 2: if "+" in infos[0].text: phoneNumber = infos[0].text wpNumber = "-" email = "-" if "@" in infos[0].text: email = infos[0].text phoneNumber = "-" wpNumber = "-" if "+" in infos[1].text: wpNumber = infos[1].text if "@" in infos[1].text: email = infos[1].text if infosLength == 1: if "+" in infos[0].text: phoneNumber = infos[0].text wpNumber = "-" email = "-" else: email = infos[0].text phoneNumber = "-" wpNumber = "-" socialMedia = self.browser.getElements("//div[@class='d-flex socials mt-2']/a") facebook, instagram, linkedin, twitter, youtube = socialMedia[0].get_attribute("href"), socialMedia[1].get_attribute("href"), socialMedia[2].get_attribute("href"), socialMedia[3].get_attribute("href"), socialMedia[4].get_attribute("href") print(officeName, degree, name, phoneNumber, wpNumber, email, agent, facebook, instagram, linkedin, twitter, youtube, sep = "|") sheet.append((officeName, degree, name, phoneNumber, wpNumber, email, agent, facebook, instagram, linkedin, twitter, youtube)) book.save("./files/era_agents.xlsx") book.close()
class RealtyWorld(RealEstate): def __init__(self) -> None: self.officeNames = [] self.officeAddress = [] self.officeProvinces = [] self.phoneNumbers = [] self.websiteLinks = [] self.emails = [] self.agents = [] self.browser = Browser() def getOffices(self) -> None: self.browser.goPage("https://www.realtyworld.com.tr/tr/ofisler") sleep(2) self.browser.clickElement( "//div[@class='formBlock select']//button[@type='submit']") sleep(5) self.officeNames = self.browser.getElements( "//div[@class='col-sm-6 col-md-4']/header/h3/a") self.officeAddress_a = self.browser.getElements( "//div[@class='col-12 col-md-5']/p") self.officeProvinces = self.browser.getElements( "//div[@class='col-sm-6 col-md-4']/header/h4") self.phoneNumbers = self.browser.getElements( "//div[@class='col-sm-6 col-md-4']/header/h5") self.websiteLinks = self.browser.getElements( "//div[@class='col-12 col-md-5']/p/a") self.emails = self.browser.getElements( "//div[@class='col-sm-6 col-md-4']/header/h5/a") book = ExcelConnection().connectToExcel() sheet = book.active sheet.append(("Ofis Adi", "Ofis Adresi", "Il - Ilce", "Numara", "Website", "E-mail")) for officeName, officeAddress, officeProvince, phoneNumber, websiteLink, email in zip( self.officeNames, self.officeAddress_a, self.officeProvinces, self.phoneNumbers, self.websiteLinks, self.emails): print(officeName.text.replace("\n", " "), officeAddress.text.split("\n")[0], officeProvince.text, phoneNumber.text.split("\n")[0], websiteLink.get_attribute("href"), email.get_attribute("href").split("mailto:")[1], sep="|") phoneNumber = phoneNumber.text.split("\n")[0] if phoneNumber[0] != "+": phoneNumber = "-" sheet.append( (officeName.text.replace("\n", " "), officeAddress.text.split("\n")[0], officeProvince.text, phoneNumber, websiteLink.get_attribute("href"), email.get_attribute("href").split("mailto:")[1])) book.save("./files/realtyWorld_offices.xlsx") book.close() def getAgents(self) -> None: self.browser.goPage("https://www.realtyworld.com.tr/tr/ofisler") sleep(2) self.browser.clickElement("//a[@href='#tab2']") sleep(1) searchButton = self.browser.getElements( "//div[@class='formBlock select']//button[@type='submit']")[1] self.browser.clickElementWithoutXpath(searchButton) self.browser.execute_script( "window.scrollTo(0, document.body.scrollHeight);var lenOfPage=document.body.scrollHeight;return lenOfPage;" ) sleep(2) self.agents = self.browser.getElements( "//div[@class='col-sm-6 col-md-4']/header/h3/a" ) #.get_attribute("href") self.agents = [agent.get_attribute("href") for agent in self.agents] book = ExcelConnection().connectToExcel() sheet = book.active sheet.append(("Ofis Adi", "Rolu", "Adi Soyadi", "Telefon 1", "Telefon 2", "E-mail")) for agent in self.agents: try: self.browser.goPage(agent) self.browser.waitElement( "//div[@class='col-sm-8 col-md-9 col-lg-10']/h3", 5) officeName = self.browser.getElement( "//div[@class='col-sm-8 col-md-9 col-lg-10']/p/a").text agentDegree = self.browser.getElement( "//div[@class='col-sm-8 col-md-9 col-lg-10']/p/b").text agentName = self.browser.getElement( "//div[@class='col-sm-8 col-md-9 col-lg-10']/h3").text agentInfos = self.browser.getElements( "//div[@class='col-sm-8 col-md-9 col-lg-10']/p" )[1].text.split("\n") phoneNumber1 = agentInfos[0] if "+" not in phoneNumber1: phoneNumber1 = agentInfos[1] phoneNumber2 = agentInfos[2] if "+" not in phoneNumber2: phoneNumber2 = "-" email = self.browser.getElements( "//div[@class='col-sm-8 col-md-9 col-lg-10']/p/a")[1].text print(officeName, agentDegree, agentName, phoneNumber1, phoneNumber2, email, sep="|") sheet.append((officeName, agentDegree, agentName, phoneNumber1, phoneNumber2, email)) book.save("./files/realtyWorld_agents.xlsx") except: print("Bu ofis gecildi..") pass book.close()
class KristalTurkiye(RealEstate): def __init__(self) -> None: self.offices = [] self.agents = [] self.provinces = [] self.browser = Browser() def getOffices(self) -> None: self.kristalTurkiyeGetProvinces() self.browser.goPage("https://kristalturkiye.com/ofislerimiz/") sleep(2) offices_t = self.browser.getElements("//div[@class='pic']/a") for office_t in offices_t: self.offices.append(office_t.get_attribute("href")) book = ExcelConnection().connectToExcel() sheet = book.active sheet.append(("Ofis Adi", "Ofis Adresi", "Il - Ilce", "Telefon Numarasi", "E-mail", "Website")) for office, province in zip(self.offices, self.provinces): self.browser.goPage(office) sleep(2) self.browser.execute_script("window.scrollTo(0, document.body.scrollHeight);var lenOfPage=document.body.scrollHeight;return lenOfPage;") officeName = self.browser.getElement("//h1[@data-aos='zoom-in']").text infos = self.browser.getElements("//table[@class='table bordernone']/tbody/tr") officeAddress = infos[0].text if officeAddress == "": officeAddress = "-" officeProvince = province if (officeProvince == "") or (officeProvince == "/") : officeProvince = "-" phoneNumber = infos[1].text email = self.browser.getElements("//table[@class='table bordernone']/tbody/tr/td")[-1].text if email == "": email = "-" websiteLink = office agents_t = self.browser.getElements("//div[@class='pics']/a") for agent_t in agents_t: self.agents.append(agent_t.get_attribute("href")) print(officeName, officeAddress, officeProvince, phoneNumber, email, websiteLink, sep = "|") sheet.append((officeName, officeAddress, officeProvince, phoneNumber, email, websiteLink)) book.save("./files/kristalTurkiye_offices.xlsx") book.close() def getAgents(self) -> None: book = ExcelConnection().connectToExcel() sheet = book.active sheet.append(("Ofis Adi", "Rolu", "Adi Soyadi", "Telefon Numarasi", "E-mail", "Website")) for agent in self.agents: self.browser.goPage(agent) self.browser.execute_script("window.scrollTo(0, document.body.scrollHeight);var lenOfPage=document.body.scrollHeight;return lenOfPage;") self.browser.waitElement("//h1[@data-aos='zoom-in']", 5) officeName = self.browser.getElement("//h1[@data-aos='zoom-in']").text if officeName == "": sleep(2) self.browser.execute_script("window.scrollTo(document.body.scrollHeight, 0);") officeName = self.browser.getElement("//h1[@data-aos='zoom-in']").text degree = self.browser.getElement("//h3[@class='text-center title']/small").text name = self.browser.getElement("//h3[@class='text-center title']").text.split("\n")[0] phoneNumber = self.browser.getElements("//p[@class='text-center']/a/b")[0].text email = self.browser.getElements("//p[@class='text-center']/a/b")[1].text websiteLink = agent print(officeName, degree, name, phoneNumber, email, websiteLink, sep = "|") sheet.append((officeName, degree, name, phoneNumber, email, websiteLink)) book.save("./files/kristalTurkiye_agents.xlsx") book.close() def kristalTurkiyeGetProvinces(self): self.browser.goPage("https://kristalturkiye.com/ofislerimiz/") sleep(2) self.browser.execute_script("window.scrollTo(0, document.body.scrollHeight);var lenOfPage=document.body.scrollHeight;return lenOfPage;") sleep(2) provinces_t = self.browser.getElements("//div[@class='team-content']//span[@class='post']") for province_t in provinces_t: self.provinces.append(province_t.text)