Exemplo n.º 1
0
    def get_kabupaten(self):
        for prov in self.provinsi:
            raw_kab = simple_get(prov['url'])
            html = bs(raw_kab, 'html.parser')

            div = html.find('div', {'id': 'TabPaneCuaca1'})

            table = div.find('table', {'class': 'table-prakicu-provinsi'})

            for a in table.findAll('a'):
                text = a.text
                link = a['href']
                query = urlparse.urlparse(link).query
                url = os.path.join(os.path.split(CUACA_URL)[0], link)

                self.kabupaten.append({
                    "prov":
                    prov['code'],
                    "name":
                    text,
                    "link":
                    link,
                    "url":
                    url,
                    "code":
                    urlparse.parse_qs(query)['AreaID'][0]
                })

        return self.kabupaten
Exemplo n.º 2
0
    def get(self):
        raw_html = simple_get(self.URL)
        html = bs(raw_html, 'html.parser')
        kab = html.find('div', {'class': 'prakicu-kabkota'})

        nav_tab = []

        for li in kab.ul.findAll('li'):
            by_id = kab.find('div', {'id': li.a['href'].replace('#', '')})
            for kota in by_id.findAll('div', {'class': 'prakicu-kota'}):

                waktu = kota.h2.text

                kiri = kota.find('div', {'class': 'kiri'})
                icon = kiri.img['src']
                cuaca = kiri.p.text
                kanan = kota.find('div', {'class': 'kanan'})
                suhu = kanan.h2.text
                p_all = []
                p = kanan.findAll('p')
                p_atas = p[0] if len(p) >= 2 else None

                for i in p_atas.findAll('i'):
                    i.replaceWith(" ")

                p_atas = str(u''.join(
                    p_atas.text).encode('utf-8').strip()).split(' ')
                suhu_min = str(p_atas[0]) if len(p_atas) >= 3 else None
                suhu_max = p_atas[1] if len(p_atas) >= 3 else None
                lembab = p_atas[2] if len(p_atas) >= 3 else None

                p_bawah = p[1] if len(p) >= 2 else None
                p_bawah.br.replaceWith("-")
                for i in p_bawah.findAll('i'):
                    i.replaceWith(" ")

                p_bawah = str(u''.join(
                    p_bawah.text).encode('utf-8').strip()).split('-')
                angin = p_bawah[0] if len(p_bawah) >= 2 else None
                arah_angin = p_bawah[1] if len(p_bawah) >= 2 else None

                self.results.append({
                    "hari": li.a.text,
                    "area_id": self.area_id,
                    "prov": self.prov,
                    "waktu": waktu,
                    "icon": icon,
                    "cuaca": cuaca,
                    "suhu": suhu,
                    "suhu_min": suhu_min,
                    "suhu_max": suhu_max,
                    "lembab": lembab,
                    "angin": angin,
                    "arah_angin": arah_angin
                })

        return self.results
Exemplo n.º 3
0
    def get(self):
        self.raw_html = simple_get(CUACA_BANDARA_AKTUAL_URL)
        self.html = bs(self.raw_html, 'html.parser')

        tbody = self.html.table.tbody
        for tr in tbody.findAll('tr'):
            td = tr.findAll('td')
            self.results.append({
                "nama": td[1].text,
                "waktu_pengamatan": td[2].text,
                "angin": {
                    "arah_dari": td[3].text,
                    "kecepatan": td[4].text
                },
                "jarak_pandang": td[5].text,
                "cuaca": td[6].text,
                "suhu": td[7].text,
                "titik_embun": td[8].text,
                "tekanan_udara": td[9].text
            })
        
        return self.results
Exemplo n.º 4
0
    def get_provinsi(self):
        raw_html = simple_get(self.URL)
        html = bs(raw_html, 'html.parser')

        for div in html.findAll('div', {'class': 'list-cuaca-provinsi'}):
            for a in div.findAll('a'):
                text = a.text
                link = a['href']
                query = urlparse.urlparse(link).query
                url = os.path.join(os.path.split(CUACA_URL)[0], link)

                self.provinsi.append({
                    "name":
                    text,
                    "link":
                    link,
                    "url":
                    url,
                    "code":
                    urlparse.parse_qs(query)['Prov'][0]
                })

        return self.provinsi
Exemplo n.º 5
0
    def get(self, waktu_prakiraan=1):
        if waktu_prakiraan < 1 or waktu_prakiraan > 12:
            raise MaxMinPrakiraan("Waktu Prakiraan Minium 1 dan Maximum 12")
        
        self.URL = CUACA_BANDARA_PRAKIRAAN_URL.format(waktu_prakiraan)
        self.raw_html = simple_get(self.URL)
        self.html = bs(self.raw_html, 'html.parser')

        tbody = self.html.table.tbody
        for tr in tbody.findAll('tr'):
            td = tr.findAll('td')
            self.results.append({
                "nama": td[1].text,
                "waktu_prakiraan": td[2].text,
                "angin": {
                    "arah_dari": td[3].text,
                    "kecepatan": td[4].text
                },
                "jarak_pandang": td[5].text,
                "cuaca": td[6].text,
                "probabilitas": td[7].text
            })
        
        return self.results