LoginSignup
2
2

More than 5 years have passed since last update.

コミュニティサイクルの利用履歴をスクレイピングv2 Headless Chrome版

Last updated at Posted at 2017-10-24

はじめに

Headless Chromeというモノがあることを知り、これまでに PhantomJS でやってきたことの移植に手を付けようと思いました。
とりあえず、過去に作った「コミュニティサイクルの利用履歴をスクレイピング」をそのターゲットにしました。

やってみたこと

Python3 + BeautifulSoup4 + Selenium + headless Chrome です。
ChromeDriverをインストールすることをお忘れなく。

docomo-cycle-hc.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
from selenium.webdriver.chrome.options import Options

MEMBERID = "(自分のユーザID)"
PASSWORD = "(自分のパスワード)"

options = Options()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
options.add_argument('--window-size=1024,768')

driver = webdriver.Chrome(chrome_options=options)

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.XPATH, "//*[@id='pc_bill']")))
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-hc.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()

上記スクリプトを実行すると、利用履歴がdocomo-cycle-hc.csvというファイルに出力されます。
なお、Mac環境とWindows環境で動作確認済みです。

今後のこと

とりあえず、PhantomJSでやってきたことをHeadless Chromeに移植することは難しくないので、移植に関する記事はこのくらいにして、別のことにチャレンジしたいと思います。

参考

Windows環境下でHeadless ChromeをPython3とSeleniumで動作させるキモ
コミュニティサイクルの利用履歴をスクレイピング v2

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2