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)