예제 #1
0
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()
예제 #2
0
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()
예제 #3
0
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()