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 Premar(RealEstate): def __init__(self) -> None: self.offices = [] self.agents = [] self.provinces = [] self.provinces_a = [] self.browser = Browser() def getOffices(self) -> None: premarUrl = "https://www.premar.com.tr/ofisler" self.browser.goPage(premarUrl) pageCount = int(self.browser.getElements("//ul[@class='pagination']/li")[-2].text) for page in range(1, pageCount + 1): self.browser.goPage(premarUrl + "?page=" + str(page)) sleep(2) offices_t = self.browser.getElements("//div[@class='content p-2']/a") provinces_t = self.browser.getElements("//span[@class='city']") for office_t, province_t in zip(offices_t, provinces_t): self.offices.append(office_t.get_attribute("href")) self.provinces.append(province_t.text) book = ExcelConnection().connectToExcel() sheet = book.active sheet.append(("Ofis Adi", "Ofis Adresi", "Il - Ilce", "Telefon 1", "Telefon 2", "E-mail", "Website")) for office, province in zip(self.offices, self.provinces): try: self.browser.goPage(office) sleep(2) infos = self.browser.getElements("//span[@class='content d-block text-muted']") officeName = self.browser.getElement("//h1[@class='name']").text officeAddress = infos[0].text officeProvince = province phoneNumber = infos[2].text phoneNumber2 = infos[3].text if phoneNumber2 == "": phoneNumber2 = "-" email = infos[4].text if "@" not in email: email = "-" websiteLink = infos[1].text print(officeName, officeAddress, officeProvince, phoneNumber, phoneNumber2, email, websiteLink, sep = "|") sheet.append((officeName, officeAddress, officeProvince, phoneNumber, phoneNumber2, email, websiteLink)) book.save("./files/premar_offices.xlsx") except NoSuchElementException: print("Bu ofis gecildi..") book.close() def getAgents(self) -> None: premarUrl = "https://www.premar.com.tr/danismanlar" self.browser.goPage(premarUrl) sleep(2) pageCount = int(self.browser.getElements("//ul[@class='pagination']/li")[-2].text) book = ExcelConnection().connectToExcel() sheet = book.active sheet.append(("Ofis Adi", "Rolu", "Adi Soyadi", "Telefon 1", "Telefon 2", "E-mail")) for page in range(1, pageCount + 1): self.browser.goPage(premarUrl + "?page=" + str(page)) sleep(2) agents_t = self.browser.getElements("//div[@class='content p-2']/a") provinces_t = self.browser.getElements("//span[@class='city']") for agent_t, province_t in zip(agents_t, provinces_t): self.agents.append(agent_t.get_attribute("href")) self.provinces_a.append(province_t.text) for agent, province in zip(self.agents, self.provinces_a): self.browser.goPage(agent) self.browser.waitElement("//a[@class='phone']", 5) officeName = self.browser.getElements("//ol[@class='breadcrumb']/li")[1].text degree = self.browser.getElement("//h6[@class='user-title']").text agentName = self.browser.getElement("//h5[@class='user-name mt-2']").text infos = self.browser.getElements("//a[@class='phone contact-link']") phoneNumber = infos[0].text phoneNumber2 = self.browser.getElement("//a[@class='phone']").text try: email = infos[1].text except IndexError: email = "-" print(officeName, degree, agentName, phoneNumber, phoneNumber2, email, sep = "|") sheet.append((officeName, degree, agentName, phoneNumber, phoneNumber2, email)) book.save("./files/premar_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()
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)