[PYTHON] Scraping Community Cycle Nutzungsverlauf PhantomJS-Version

Einführung

Gestern schrieb ich einen Artikel "Scraping Community Cycle Use History". Dieser Artikel ist eine Fortsetzung davon.

Was ich versucht habe

Zur Zeit von gestern habe ich Firefox gestartet und gekratzt, aber diesmal die "[Zukunft] von gestern (http://qiita.com/nuwaa/items/48c7e1588fb0409659ac#%E4%BB%8A%E5%] BE% 8C% E3% 81% AE% E3% 81% 93% E3% 81% A8) “, versuchte ich PhantomJS zu unterstützen. Als ich es erneut versuchte, war es sehr einfach zu erledigen. Aus diesem Grund wurde bestätigt, dass die Kombination aus Python3 + BeautifulSoup4 + Selenium + PhantomJS in einer Windows-Umgebung funktioniert.

docomo-cycle-pjs.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.PhantomJS()
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()

Der einzige Unterschied zu gestern ist also die Beschreibung des Webtreibers. .. .. Seit gestern

driver = webdriver.Firefox()


 Es war

#### **`driver = webdriver.PhantomJS()`**
```PhantomJS()

 Es wurde einfach.
 Der zu beachtende Punkt ist, dass "PhantomJS ordnungsgemäß installiert ist und der Pfad vorhanden ist".

 Übrigens ist das Operationsergebnis des obigen Skripts wie folgt.
 (Im Vergleich zur gestrigen CSV-Datei hat sich der Verlauf um 2 erhöht!)


#### **`docomo-cycle.csv`**
```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)
8,2016/5/10 19:26,A3-02.Casa Nova Geschäft (Kaede Gebäude) A3-02.CASA NOUVA SHOP(Kaede Building),→,2016/5/10 19:48,B4-03.Kirschblüten-Wanderweg (vor dem Harumi Triton Square) B4-03.Sakura no sanpomichi(In front of Harumi Triton Square)
9,2016/5/11 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/11 07:45,A3-02.Casa Nova Geschäft (Kaede Gebäude) A3-02.CASA NOUVA SHOP(Kaede Building)

Zukunft

Allein das Ändern von Firefox in PhantomJS machte den Vorgang sehr erfrischend. Es wäre schön, Dinge wie das automatische Hinzufügen zu Google-Tabellen und das Speichern von Daten in DBs wie MySQL zu tun.

Referenz

"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). (Das gleiche wie gestern)

Recommended Posts

Scraping Community Cycle Nutzungsverlauf PhantomJS-Version
Scraping des Nutzungsverlaufs des Community-Zyklus
Richten Sie die Version von chromedriver_binary aus
Scraping das Ergebnis von "Schedule-Kun"
Testen Sie die Version des Argparse-Moduls
Erhöhen Sie die Version von pyenv selbst
pyenv-change die Python-Version von virtualenv
So überprüfen Sie die Version von Django
Informationen zur virtuellen Umgebung von Python Version 3.7
[Python] Probieren Sie pydash der Python-Version von lodash aus
Die Verwendung von TensorBoard hat sich geringfügig geändert
Migemo-Version des Befehls: find,: mfind
Test von emacs-org parser orgparse für Python
Die Geschichte der Herstellung des Mel Icon Generator Version 2
Verwenden Sie die neueste Version von PyCharm unter Ubuntu
Schreiben Sie eine Notiz über die Python-Version von Python Virtualenv
Probieren Sie Progate Free Edition [Python I]
Visualisierte den Nutzungsstatus der Spüle im Unternehmen
Organisieren Sie die grundlegende Verwendung von Autotools und pkg-config
Scraping der Gewinndaten von Zahlen mit Docker