예제 #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 CenturyGlobal(RealEstate):
    def __init__(self) -> None:
        self.offices = []
        self.agents = []
        self.browser = Browser()

    def getOffices(self) -> None:
        self.browser.goPage(
            "https://www.century21global.com/tr/emlak-ofisleri/Turkey")
        sleep(2)
        print("Ofisler cekiliyor..")
        self.offices = [
            office.get_attribute("href") for office in
            self.browser.getElements("//a[@class='search-result-photo']")
        ]
        print("Ofisler cekildi..")

        book = ExcelConnection().connectToExcel()
        sheet = book.active
        sheet.append(("Ofis Adi", "Ofis Adresi", "Il - Ilce", "Telefon"))

        for office in self.offices:
            self.browser.goPage(office)
            officeName = self.browser.getElement(
                "//h2[@class='color-gold-highlight']").text
            infos = self.browser.getElement(
                "//div[@class='detail-data-primary']").text
            officeAddress = " ".join(infos.split("\n")[:-1])
            if "Telefon" in officeAddress:
                officeAddress = officeAddress.split(" Telefon numarası:")[0]
            province = infos.split("\n")[1]
            try:
                phoneNumber = infos.split("Telefon numarası: ")[1]
                if "F" in phoneNumber: phoneNumber = phoneNumber.split("\n")[0]
            except IndexError:
                phoneNumber = "-"
            print(officeName, officeAddress, province, phoneNumber, sep="|")
            sheet.append((officeName, officeAddress, province, phoneNumber))
            book.save("./files/centuryGlobal_offices.xlsx")
            agentsButton = self.browser.getElements(
                "//button[@class='btn btn-primary']")[0]
            self.browser.clickElementWithoutXpath(agentsButton)
            sleep(2)
            agents_t = self.browser.getElements(
                "//a[@class='search-result-info']")
            for agent_t in agents_t:
                self.agents.append(agent_t.get_attribute("href"))
        book.close()

    def getAgents(self) -> None:
        book = ExcelConnection().connectToExcel()
        sheet = book.active
        sheet.append(("Ofis Adi", "Adi Soyadi", "Telefon 1", "Telefon 2"))
        for agent in self.agents:
            self.browser.goPage(agent)
            officeName = self.browser.getElement(
                "//h2[@class='color-gold-highlight']/a").text
            name = self.browser.getElements(
                "//h2[@class='color-gold-highlight']")[0].text
            phoneNumbers = self.browser.getElement(
                "//div[@class='detail-data-primary']").text
            phoneNumber_1 = phoneNumbers.split("\n")[-2].split(
                "Cep telefonu: ")[1]
            phoneNumber_2 = phoneNumbers.split("\n")[-1].split(
                "Telefon numarası: ")[1]
            print(officeName, name, phoneNumber_1, phoneNumber_2, sep="|")
            sheet.append((officeName, name, phoneNumber_1, phoneNumber_2))
            book.save("./files/centuryGlobal_agents.xlsx")
        print("Kisiler tamamlandi..\nIslem tamamlandi..")
        book.close()
예제 #3
0
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()