uipath

できるUiPath 実践RPA

できるUiPath 実践RPA

www.uipath.com

dekiru.net

www.uipath.com

dekiru.net

internet.watch.impress.co.jp

internet.watch.impress.co.jp

forum.uipath.com

qiita.com

i.river.go.jpからダムの貯水率を取得する

import re

import requests
from bs4 import BeautifulSoup

dam_name = '早明浦ダム'
url = 'http://i.river.go.jp/_-p01-_/p/ktm1801070/?mtm=10&swd=&prf=3601&twn=3601208&rvr=&den=2255200700004'

# dam_name = '玉川ダム'
# url = 'http://i.river.go.jp/_-p01-_/p/ktm1801070/?mtm=10&swd=&prf=3801&twn=3801202&rvr=&den=0972900700006'

headers = {
    'User-Agent':
    'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko'
}

r = requests.get(url, headers=headers)

if r.status_code == 200:

    soup = BeautifulSoup(r.content, 'html5lib')

    contents = soup.find('a', {'name': 'contents'}).get_text('\n', strip=True)

    # print(contents)

    # サブタイトル・単位を除去
    temp = re.sub(r'■\d{1,2}時間履歴\n単位:%\n', '', contents)

    datas = [i.split() for i in temp.splitlines()]

    for data in datas:

        try:
            float(data[1])
        except:
            continue
        else:
            print('ただいまの{0}の貯水率は{1[1]}%です({1[0]})'.format(dam_name, data))
            break

    else:
        print('取得できませんでした')

Pythonを使ってWebページから情報を取得する

kzmmtmt.pgw.jp

Pythonで作ってみた

import requests
from bs4 import BeautifulSoup

url = 'http://www.nogizaka46.com/'

headers = {
    'User-Agent':
    'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko'
}

media = {'tv': 'テレビ', 'radio': 'ラジオ', 'web': 'ウェブ'}

r = requests.get(url, headers=headers)
soup = BeautifulSoup(r.content, 'html.parser')

for key in media.keys():

    print(f'[{media[key]}]')

    lis = [
        i.get_text(strip=True)
        for i in soup.select(f'div.today > ul > li > a.{key}')
    ]

    if len(lis) > 0:
        for li in lis:
            print(f'- {li}')
        else:
            print('')
    else:
        print('  出演はありません')

スクレイピングのおけるCSSセレクタ基本

サンプル

<div class="class" id="id">
    <h1>タイトル</h1>
    <h2>サブタイトル</h2>
    <p value="abc">テスト</p>
    <p value="abc def">テスト</p>
    <p value="abc-def">テスト</p>
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
    </ul>
</div>

基本

書式 説明 サンプル
* すべての要素 *
要素名 要素名の要素 div
.クラス名 id属性をつけた要素 div.class
#id名 id属性をつけた要素 div#id

セレクタ同士の関係

書式 説明 サンプル
セレクタ1,セレクタ2 複数のセレクタ h1,h2
セレクタ1 セレクタ2 セレクタ1の下の階層の子孫要素セレクタ2 div li
セレクタ1 > セレクタ2 セレクタ1の直下の階層の子要素セレクタ2 div > h1
セレクタ1 + セレクタ2 セレクタ1に隣接している要素セレクタ2※同じ階層 h1 + h2
セレクタ1 ~ セレクタ2 セレクタ1のあとにある要素セレクタ2※同じ階層 p ~ ul

セレクタの属性

書式 説明 サンプル
要素[value] 特定の属性を持つ要素 p[value]
要素[value="abc"] value属性にabcという値を持つ要素 p[value="abc"]
要素[value~="abc"] value属性にabcという単語が含まれる要素(スペース区切り) p[value~="abc"]
要素[value|="abc"] value属性にabcという単語が含まれる要素(ハイフン区切り) p[value|="abc"]
要素[value^="abc"] value属性にabcで始まる要素 p[value^="abc"]
要素[value$="abc"] value属性にdefで終わる要素 p[value$="def"]
要素[value*="e"] value属性にeという文字を含む要素 p[value*="e"]
続きを読む