Pythonでlxmlを用いてhtmlから情報取得


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

皆様、こんにちは。章でございます。

現場対応での仕事について、データ分析のためAPIを用いてデータを取得する場合がよくあります。代わりに、直接Htmlからデータ触りたいであれば、Pythonでlxmlを用いても構いません。

今回、pythonでlxmlを用いてhtmlから情報取得して少し遊びします。

普段、TXの運行情報はウェブサイト( https://www.mir.co.jp/info )で見られますが、「開発者ツールで調査する」により「配信日時」と「内容」は以下のCSSセレクトになります。

#mainBody > div.container > div > section:nth-child(3) > div.table-layout > table > tbody > tr:nth-child(2) > th

#mainBody > div.container > div > section:nth-child(3) > div.table-layout > table > tbody > tr:nth-child(2) > td

シンプルなPythonコードを作成します。

import requests
import cssselect
from lxml import html

def get_tx_status(
    url = 'https://www.mir.co.jp/info/',
    status_selector = '#mainBody > div.container > div > section:nth-child(3) > div.table-layout > table > tbody > tr:nth-child(2) > td',
    update_selector = '#mainBody > div.container > div > section:nth-child(3) > div.table-layout > table > tbody > tr:nth-child(2) > th'):
    r = requests.get(url)
    elem = html.fromstring(r.text)
    status = elem.cssselect(status_selector)[0].text_content().strip()
    update = elem.cssselect(update_selector)[0].text_content().strip()
    return status, update

if __name__ == '__main__':
    (status, update) = get_tx_status()
    print("TX最新運行情報")
    print(status)
    print(update)

実行しますと結果出ました。

TX最新運行情報
現在、平常通り運転しています。
2022年4月18日(月)21:05配信

今回の内容簡単ですが、共有させていただきます。また次回、よろしくお願いいたします。

Last modified: 2022-04-18

Author