めうの雑記

備忘録

pythonでNAVITIMEの電車混雑リポートから混み具合を取得する

beautifulsoupを用いたスクレイピングをしてみた。

#-*- coding: utf-8 -*-
#混雑状況

from bs4 import BeautifulSoup
import urllib.request as req
import re

url_list = ["https://www.navitime.co.jp/train/00000132/%EF%BC%AA%EF%BC%B2%E4%BA%AC%E8%91%89%E7%B7%9A_%EF%BC%AA%EF%BC%B2%E6%AD%A6%E8%94%B5%E9%87%8E%E7%B7%9A?nodeId=00007548",
"https://www.navitime.co.jp/train/00000183/%EF%BC%AA%EF%BC%B2%E6%9D%B1%E6%B5%B7%E9%81%93%E6%9C%AC%E7%B7%9A%28%E6%9D%B1%E4%BA%AC-%E7%86%B1%E6%B5%B7%29?nodeId=00006668",
"https://www.navitime.co.jp/train/00000123/%E6%A8%AA%E9%A0%88%E8%B3%80%E7%B7%9A?nodeId=00007965",
"https://www.navitime.co.jp/train/00000168/%E7%B7%8F%E6%AD%A6%E7%B7%9A%E5%BF%AB%E9%80%9F/?nodeId=00000491"
]

list = ["京葉線&武蔵野線","東海道本線","横須賀線","総武快速線"]

print("ユーザーからの投稿")

i = 0
for url in url_list:
    res = req.urlopen(url)

    soup = BeautifulSoup(res, "html.parser")
    html = soup.find_all("div")
    for h in html:
        if h.string == "※混雑リポートを最大3件まで新着順で表示しております。":
            print(list[i])
            print(" ")
            i = i + 1
            break
        else:
            h_string = str(h.string)
            byte_h = h_string.encode() #文字列=>byte
            if len(byte_h) > 4: #Noneを削除
                print(h.string)

f:id:umesann:20190105193940p:plain