[PYTHON] Scraping de l'historique d'utilisation du cycle de la communauté Version PhantomJS

introduction

Hier, j'ai écrit un article "Raclage de l'historique d'utilisation du cycle communautaire". Cet article est une continuation de cela.

Ce que j'ai essayé

Hier, j'ai démarré Firefox et gratté, mais cette fois hier "[Future](http://qiita.com/nuwaa/items/48c7e1588fb0409659ac#%E4%BB%8A%E5%] BE% 8C% E3% 81% AE% E3% 81% 93% E3% 81% A8) », j'ai essayé de soutenir PhantomJS. Quand j'ai réessayé cela, cela s'est terminé très facilement. C'est pourquoi la combinaison de Python3 + BeautifulSoup4 + Selenium + PhantomJS a été confirmée pour fonctionner dans un environnement Windows.

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 = "(Mon ID utilisateur)"
PASSWORD = "(Mon mot de passe)"

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()

Donc, la seule différence par rapport à hier est la description du pilote Web. .. .. Depuis hier

driver = webdriver.Firefox()


 C'était

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

 C'est juste devenu.
 Le point à noter est que "PhantomJS est correctement installé et le chemin est en place".

 À propos, le résultat de l'opération du script ci-dessus est le suivant.
 (Par rapport au fichier CSV d'hier, l'historique a augmenté de 2!)


#### **`docomo-cycle.csv`**
```csv

1,2016/5/2 07:22,B3-01.Bureau B3 du quartier Chuo-01.Chuo City Office,→,2016/5/2 07:35,A3-02.Boutique Casa Nova (bâtiment Kaede) A3-02.CASA NOUVA SHOP(Kaede Building)
2,2016/5/2 18:29,A3-02.Boutique Casa Nova (bâtiment Kaede) A3-02.CASA NOUVA SHOP(Kaede Building),→,2016/5/2 18:50,B4-03.Sentier des cerisiers en fleurs (devant 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-CARRÉ (Kiboricho-dori) B3-03.Ginza 6-chome SQUARE(Kobikicho Dori),→,2016/5/5 21:48,B4-03.Sentier des cerisiers en fleurs (devant Harumi Triton Square) B4-03.Sakura no sanpomichi(In front of Harumi Triton Square)
4,2016/5/6 07:28,B4-03.Sentier des cerisiers en fleurs (devant Harumi Triton Square) B4-03.Sakura no sanpomichi(In front of Harumi Triton Square),→,2016/5/6 07:41,B2-02.Yanagi-dori (devant Tokyo Square Garden) B2-02.Yanagi-dori St. (In front of TOKYO SQUARE GARDEN)
5,2016/5/8 05:00,B4-03.Sentier des cerisiers en fleurs (devant Harumi Triton Square) B4-03.Sakura no sanpomichi(In front of Harumi Triton Square),→,2016/5/8 05:08,H1-02.Station Toyosu H1-02.Toyosu Station
6,2016/5/9 07:25,B4-03.Sentier des cerisiers en fleurs (devant Harumi Triton Square) B4-03.Sakura no sanpomichi(In front of Harumi Triton Square),→,2016/5/9 07:48,A3-02.Boutique Casa Nova (bâtiment Kaede) A3-02.CASA NOUVA SHOP(Kaede Building)
7,2016/5/10 08:18,B4-03.Sentier des cerisiers en fleurs (devant Harumi Triton Square) B4-03.Sakura no sanpomichi(In front of Harumi Triton Square),→,2016/5/10 08:40,A3-02.Boutique Casa Nova (bâtiment Kaede) A3-02.CASA NOUVA SHOP(Kaede Building)
8,2016/5/10 19:26,A3-02.Boutique Casa Nova (bâtiment Kaede) A3-02.CASA NOUVA SHOP(Kaede Building),→,2016/5/10 19:48,B4-03.Sentier des cerisiers en fleurs (devant Harumi Triton Square) B4-03.Sakura no sanpomichi(In front of Harumi Triton Square)
9,2016/5/11 07:25,B4-03.Sentier des cerisiers en fleurs (devant Harumi Triton Square) B4-03.Sakura no sanpomichi(In front of Harumi Triton Square),→,2016/5/11 07:45,A3-02.Boutique Casa Nova (bâtiment Kaede) A3-02.CASA NOUVA SHOP(Kaede Building)

Futur

Le simple fait de changer Firefox en PhantomJS a rendu l'opération très rafraîchissante. Ce serait bien de faire des choses comme l'ajout automatique aux feuilles de calcul Google et le stockage de données dans des bases de données telles que MySQL.

référence

"Web Scraping with Python" O'Reilly Japan, ISBN978-4-87311-761-4 -Pour la conversion de fichier CSV, j'ai fait référence à this. (Pareil qu'hier)

Recommended Posts

Scraping de l'historique d'utilisation du cycle de la communauté Version PhantomJS
Gratter l'historique d'utilisation du cycle communautaire
Aligner la version de chromedriver_binary
Grattage du résultat de "Schedule-kun"
Tester la version du module argparse
Élever la version de pyenv elle-même
pyenv-changer la version python de virtualenv
Comment vérifier la version de Django
À propos de l'environnement virtuel de Python version 3.7
[Python] Essayez pydash de la version Python de lodash
L'utilisation de TensorBoard a légèrement changé
Version Migemo de la commande: find ,: mfind
Essai du parseur d'emacs-org orgparse pour python
L'histoire de la création du Mel Icon Generator version 2
Utilisez la dernière version de PyCharm sur Ubuntu
Écrire une note sur la version python de python virtualenv
Essayez Progate Free Edition [Python I]
Visualisation de l'état d'utilisation de l'évier dans l'entreprise
Organisez l'utilisation super basique des Autotools et de pkg-config
Gratter les données gagnantes de Numbers à l'aide de Docker