Persönlich benutze ich oft den Chuo-ku Community Cycle. Derzeit läuft das Bikecle Sharing Wide Area Experiment und 4 Stationen (Chuo Ward, Chiyoda Ward, Minato Ward) ・ Es ist ein sehr praktischer Mietzyklus, mit dem Sie frei zwischen (Koto Ward) hin und her fahren und ihn an einen anderen Fahrradhafen als den von Ihnen gemieteten zurückgeben können.
Sie können im Web überprüfen, wann, wo, wo Sie angekommen sind. Aber ich wollte dies automatisieren, also habe ich es mit Python3 + BeautifulSoup4 + Selenium + Firefox gemacht. Es wurde bestätigt, dass es in einer Windows-Umgebung funktioniert. (Zur Zeit habe ich mich in Chuo Ward registriert, es ist also ein Skript für Chuo Ward-Registranten.)
docomo-cycle.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import urllib.request
from bs4 import BeautifulSoup
import time
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
import csv
MEMBERID = "(Meine Benutzer-ID)"
PASSWORD = "(Mein Passwort)"
driver = webdriver.Firefox()
driver.get("https://tcc.docomo-cycle.jp/cycle/TYO/cs_web_main.php?AreaID=2")
mid = driver.find_element_by_name('MemberID')
mid.send_keys(MEMBERID)
password = driver.find_element_by_name('Password')
password.send_keys(PASSWORD)
password.send_keys(Keys.RETURN)
obj1 = WebDriverWait(driver,5).until(
EC.presence_of_element_located((By.PARTIAL_LINK_TEXT, "Billing")))
obj1.click()
time.sleep(3)
data = driver.page_source.encode('utf-8')
soup = BeautifulSoup(data, "html.parser")
table = soup.findAll("table",{"class":"rnt_ref_table"})[0]
rows = table.findAll("tr")
csvFile = open("docomo-cycle.csv", 'wt', newline='', encoding='utf-8')
writer = csv.writer(csvFile)
try:
for row in rows:
csvRow = []
for cell in row.findAll(['td', 'th']):
csvRow.append(cell.get_text().replace('\n',''))
writer.writerow(csvRow)
finally:
csvFile.close()
driver.close()
Wenn das obige Skript ausgeführt wird, wird der Verwendungsverlauf als docomo-cycle.csv ausgegeben. Es ist so.
docomo-cycle.csv
1,2016/5/2 07:22,B3-01.Chuo Ward Office B3-01.Chuo City Office,→,2016/5/2 07:35,A3-02.Casa Nova Geschäft (Kaede Gebäude) A3-02.CASA NOUVA SHOP(Kaede Building)
2,2016/5/2 18:29,A3-02.Casa Nova Geschäft (Kaede Gebäude) A3-02.CASA NOUVA SHOP(Kaede Building),→,2016/5/2 18:50,B4-03.Kirschblüten-Wanderweg (vor dem Harumi Triton Square) B4-03.Sakura no sanpomichi(In front of Harumi Triton Square)
3,2016/5/5 21:32,B3-03.Ginza 6-Chome-Quadrat (Kiboricho-Dori) B3-03.Ginza 6-chome SQUARE(Kobikicho Dori),→,2016/5/5 21:48,B4-03.Kirschblüten-Wanderweg (vor dem Harumi Triton Square) B4-03.Sakura no sanpomichi(In front of Harumi Triton Square)
4,2016/5/6 07:28,B4-03.Kirschblüten-Wanderweg (vor dem Harumi Triton Square) B4-03.Sakura no sanpomichi(In front of Harumi Triton Square),→,2016/5/6 07:41,B2-02.Yanagi-dori (vor dem Tokyo Square Garden) B2-02.Yanagi-dori St. (In front of TOKYO SQUARE GARDEN)
5,2016/5/8 05:00,B4-03.Kirschblüten-Wanderweg (vor dem Harumi Triton Square) B4-03.Sakura no sanpomichi(In front of Harumi Triton Square),→,2016/5/8 05:08,H1-02.Toyosu Station H1-02.Toyosu Station
6,2016/5/9 07:25,B4-03.Kirschblüten-Wanderweg (vor dem Harumi Triton Square) B4-03.Sakura no sanpomichi(In front of Harumi Triton Square),→,2016/5/9 07:48,A3-02.Casa Nova Geschäft (Kaede Gebäude) A3-02.CASA NOUVA SHOP(Kaede Building)
7,2016/5/10 08:18,B4-03.Kirschblüten-Wanderweg (vor dem Harumi Triton Square) B4-03.Sakura no sanpomichi(In front of Harumi Triton Square),→,2016/5/10 08:40,A3-02.Casa Nova Geschäft (Kaede Gebäude) A3-02.CASA NOUVA SHOP(Kaede Building)
Unter dem Gesichtspunkt "automatisch" ist es sinnlos, Firefox zu starten und den Bildschirm zu ändern. Daher möchte ich PhantomJS oder etwas anderes verwenden, damit es geräuschlos funktioniert. Anschließend können Sie es rechtzeitig mit cron abkratzen oder automatisch zu Ihrer Google-Tabelle hinzufügen. .. ..
・ "Web Scraping mit Python" O'Reilly Japan, ISBN978-4-87311-761-4 -Für die Konvertierung von CSV-Dateien habe ich auf [this] verwiesen (https://github.com/REMitchell/python-scraping/blob/master/chapter5/3-scrapeCsv.py).
Selbst in anderen Community-Zyklen als Chuo-ku, Tokio, scheinen sie von demselben System verwaltet zu werden. Sie können dies also möglicherweise tun, indem Sie die URL in der Zeile ** driver.get ** auf den folgenden Inhalt umschreiben.
・ Koto Ward https://tcc.docomo-cycle.jp/cycle/TYO/cs_web_main.php?AreaID=4 ・ Chiyoda Ward https://tcc.docomo-cycle.jp/cycle/TYO/cs_web_main.php?AreaID=1 · Minato-ku https://tcc.docomo-cycle.jp/cycle/TYO/cs_web_main.php?AreaID=3 · Yokohama https://tcc.docomo-cycle.jp/cycle/YKH/cs_web_main.php ・ Sendai https://tcc.docomo-cycle.jp/cycle/SND/cs_web_main.php · Hiroshima https://tcc.docomo-cycle.jp/cycle/HRS/cs_web_main.php ・ Präfektur Kanagawa West https://tcc.docomo-cycle.jp/cycle/KNS/cs_web_main.php ・ Koshu https://tcc.docomo-cycle.jp/cycle/KSH/cs_web_main.php ・ Kobe https://tcc.docomo-cycle.jp/cycle/kob/cs_web_main.php
Recommended Posts