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 Turyap(RealEstate): def __init__(self) -> None: self.offices = [] self.agents = [] self.agentNames = [] self.agentPositions = [] self.agentNumbers_1 = [] self.agentNumbers_2 = [] self.browser = Browser() def getOffices(self) -> None: self.browser.goPage("http://www.turyap.com.tr/ofislerimiz") sleep(3) totalNumber = int( self.browser.getElement( "//div[@id='top_pane']//span[@id='total_number']").text) currentNumber = 0 while totalNumber != currentNumber: sleep(2) offices_t = self.browser.getElements( "//div[@class='pull-right']/a") [ self.offices.append(office_t.get_attribute("href")) for office_t in offices_t ] self.browser.waitElement( "//div[@id='top_pane']//i[@class='icon icon-round icon-next']", 5) self.browser.clickElement( "//div[@id='top_pane']//i[@class='icon icon-round icon-next']") currentNumber = int( self.browser.getElement( "//div[@id='top_pane']//span[@id='current_number']").text. split("- ")[1]) book = ExcelConnection().connectToExcel() sheet = book.active sheet.append(("Ofis Adi", "Ofis Adresi", "Il", "Ilce", "Telefon 1", "Telefon 2", "Fax", "Website")) for office in self.offices: self.browser.goPage(office) sleep(2) officeName = self.browser.getElement( "//div[@class='panel-body']/div[@class='title']").text addressInfo = self.browser.getElements( "//div[@class='address']/div[@class='line']") officeAddress, officeProvince, officeDistrict = addressInfo[ 0].text, addressInfo[1].text, addressInfo[2].text numbers = self.browser.getElements( "//div[@class='data-wrapper']//span[@dir='ltr']") phoneNumber1, phoneNumber2 = numbers[0].text, numbers[1].text try: faxNumber = numbers[2].text except: faxNumber = "-" pass websiteLink = self.browser.getElement( "//span[@class='pull-left']/a").get_attribute("href") agentNames_t = self.browser.getElements( "//div[@class='data-wrapper col-xs-12 col-sm-12 col-md-12 col-lg-12']/div[@class='name text-center']" ) [ self.agentNames.append(agentName_t.text) for agentName_t in agentNames_t ] agentPositions_t = self.browser.getElements( "//div[@class='data-wrapper col-xs-12 col-sm-12 col-md-12 col-lg-12']/div[@class='position']" ) [ self.agentPositions.append(agentPosition_t.text) for agentPosition_t in agentPositions_t ] agentNumbers_1_t = self.browser.getElements( "//div[@class='data-wrapper col-xs-12 col-sm-12 col-md-12 col-lg-12']/div[@class='mobile-phone']/span" ) [ self.agentNumbers.append(agentNumber_1_t.text) for agentNumber_1_t in agentNumbers_1_t ] agentNumbers_2_t = self.browser.getElements( "//div[@class='data-wrapper col-xs-12 col-sm-12 col-md-12 col-lg-12']/div[@class='phone']/span" ) [ self.agentNumbers.append(agentNumber_2_t.text) for agentNumber_2_t in agentNumbers_2_t ] print(officeName, officeAddress, officeDistrict, officeProvince, phoneNumber1, phoneNumber2, faxNumber, websiteLink, sep="|") sheet.append( (officeName, officeAddress, officeDistrict, officeProvince, phoneNumber1, phoneNumber2, faxNumber, websiteLink)) book.save("./files/turyap_offices.xlsx") book.close() def getAgents(self) -> None: book = ExcelConnection().connectToExcel() sheet = book.active sheet.append(("Rolu", "Adi Soyadi", "Telefon 1", "Telefon 2")) for agentPosition, agentName, agentNumber_1, agentNumber_2 in zip( self.agentNames, self.agentPositions, self.agentNumbers_1, self.agentNumbers_2): print(agentPosition, agentName, agentNumber_1, agentNumber_2, sep="|") sheet.append( (agentPosition, agentName, agentNumber_1, agentNumber_2)) book.save("./files/turyap_agents.xlsx") book.close()
class KwTurkiye(RealEstate): def __init__(self) -> None: self.offices = [] self.agents = [] self.browser = Browser() def getOffices(self) -> None: self.browser.goPage("https://www.kwturkiye.com/officeagentsearch/") sleep(3) pageCount = int(self.browser.getElements("//a[@class='ng-binding']")[-2].text) for page in range(pageCount): sleep(3) officeInfo = self.browser.getElements("//a[@class='office-name ng-binding']") for office in officeInfo: self.offices.append(office.get_attribute("href")) try: self.browser.clickElement("//li[@class='pagination-next ng-scope']/a") except NoSuchElementException: print("Ofisler cekildi..") book = ExcelConnection().connectToExcel() sheet = book.active sheet.append(("Ofis Adi", "Ofis Adresi", "Il- Ilce", "Telefon Numarasi", "Website", "Yonetim")) for office in self.offices: try: self.browser.goPage(office) self.browser.waitElement("//div[@ng-if='vm.officeStaff.length > 0']//div[@class='agent-languages']/div/div", 5) officeName = self.browser.getElement("//div[@class='location-office']//div[@class='col-xs-12']/h4/span").text officeAddress_t = self.browser.getElement("//div[@class='location-office']//div[@class='address ng-scope']/div").text officeAddress = " ".join(officeAddress_t.split("\n")) officeProvince = officeAddress_t.split("\n")[-1] try: officeNumber = self.browser.getElement("//div[@class='officeagent-comm-item ng-scope']/a[@class='icon-btn-phone']").get_attribute("alt") except: officeNumber = "-" try: websiteLink = self.browser.getElement("//div[@ng-if='vm.office.personalWebsite']//a").get_attribute("href") except: websiteLink = "-" government_t = self.browser.getElements("//div[@ng-if='vm.officeStaff.length > 0']//div[@class='agent-languages']/div/div") government_t = [i.text for i in government_t] government = ", ".join(government_t).replace("\n"," ") print(officeName, officeAddress, officeProvince, officeNumber, websiteLink, government, sep = "|") sheet.append((officeName, officeAddress, officeProvince, officeNumber, websiteLink, government)) book.save("./files/kwTurkiye_offices.xlsx") except: print("Ofis gecildi..") book.close() def getAgents(self) -> None: self.browser.goPage("https://www.kwturkiye.com/agents") sleep(3) pageCount = int(self.browser.getElements("//a[@class='ng-binding']")[-2].text) ##1 eksigi kere basacak sonraki butonuna for page in range(pageCount): sleep(3) agentInfo = self.browser.getElements("//a[@class='agent-name ng-binding']") for agent in agentInfo: self.agents.append(agent.get_attribute("href")) try: self.browser.clickElement("//li[@class='pagination-next ng-scope']/a") except NoSuchElementException: print("Kisiler cekildi..") counter = 1 book = ExcelConnection().connectToExcel() sheet = book.active sheet.append(("Adi Soyadi", "Ofis Adi", "Ofis Adresi", "Telefon 1", "Telefon 2", "Website")) for agent in self.agents: try: self.browser.goPage(agent) self.browser.waitElement("//div[@class='col-xs-12 form-group']/div[@class='photo-agent']/h2/a", 3) name = self.browser.getElements("//div[@class='col-xs-12 form-group']/div[@class='photo-agent']/h2/a")[1].text officeName = self.browser.getElement("//div[@class='office-details']/h3/a").text officeAddress = self.browser.getElement("//div[@class='office-details']/div[@class='form-group officeagent-addr']/span").text try: wpNumber = self.browser.getElements("//a[@class='icon-btn-whatsapp']")[1].get_attribute("href").split("phone=")[1] except: wpNumber = "-" pass try: phoneNumber = self.browser.getElements("//a[@class='icon-btn-phone']")[2].get_attribute('href').split("tel:")[1] except: phoneNumber = "-" pass print(str(counter), name, officeName, officeAddress, wpNumber, phoneNumber, agent, sep = "|") sheet.append((name, officeName, officeAddress, wpNumber, phoneNumber, agent)) book.save("./files/kwTurkiye_agents.xlsx") counter += 1 except: print("Profil gecildi..") book.close()