【python】副業もできる!スクレイピングウエブブラウザ自動操作selenium編

ブラウザ操作

0:00:00 イントロ
0:00:12 スクレイピングとは?
0:01:47 ドライバ設定・自動ログイン
0:08:55 商品リスト出力
0:29:34 エンディング

◆動画で紹介したプログラム
※開発環境はpycharmです。2022年3月時点で動作しています。コードは自己責任の上、ご自由にお使いください。

【Chromeドライバダウンロードサイト】
※バージョン調整が必要です。
https://chromedriver.storage.googleapis.com/index.html?path=98.0.4758.102/

【amazon_xxx.py】
import time

from selenium import webdriver
# Chromeドライバ
from selenium.webdriver.chrome.service import Service

s = Service(‘D:/YouTube/python/scraping/chromedriver98_0_4758_102.exe’)
driver = webdriver.Chrome(service=s)
# seleniumuからAmazonのページを自動で開く
driver.get(‘https://www.amazon.co.jp/’)

# ログイン画面へ遷移
mailad = driver.find_element_by_id(“nav-link-accountList”)
mailad.click()
time.sleep(3)

# ログインIDを入力
login_id = driver.find_element_by_id(“ap_email”)
login_id.send_keys(‘xxxxx’)
time.sleep(3)

# 「次に進む」をクリック
nextb = driver.find_element_by_class_name(“a-button-input”)
nextb.click()
time.sleep(3)

# パスワードを入力
password = driver.find_element_by_name(“password”)
password.send_keys(‘xxxxx’)

# 「ログイン」をクリック
nextb = driver.find_element_by_id(“signInSubmit”)
nextb.click()
time.sleep(3)

【selenium_amazon.py】
import csv
import datetime

from selenium import webdriver
# Chromeドライバ
from selenium.webdriver.chrome.service import Service

s = Service(‘D:/YouTube/python/scraping/chromedriver98_0_4758_102.exe’)
browser = webdriver.Chrome(service=s)

# seleniumからAmazonのページを自動で開く
browser.get(‘https://www.amazon.co.jp/’)

# 検索したいキーワードを入力
elem = browser.find_element_by_id(“twotabsearchtextbox”)
elem.send_keys(“ROLEX 腕時計”)

# 検索の実行
elem_btn = browser.find_element_by_id(“nav-search-submit-button”)
elem_btn.click()

# 商品リスト取得
goods_list = browser.find_elements_by_class_name(“sg-col-inner”)
print(len(goods_list))

# CSV形式でファイル出力
today = datetime.datetime.now().strftime(‘%Y.%m.%d’)
with open(‘Amazon’ + str(today) + ‘.csv’, ‘w’, encoding=’CP932′, errors=’replace’) as f:
writer = csv.writer(f, lineterminator=”n”)
writer.writerow([‘No’, ‘商品名’, ‘値段’, ‘画像URL’, ‘商品説明’])
no = 1
previousMaker, previousPrice, previousImage, previousDescription = ”, ”, ”, ”
for goods in goods_list:
try:
maker = goods.find_element_by_css_selector(“.s-line-clamp-1”).text
except:
maker = ‘[No Maker]’
try:
price = goods.find_element_by_class_name(“a-price-whole”).text
except:
price = ‘[No Price]’
try:
image = goods.find_element_by_class_name(“s-image”).get_attribute(“src”)
except:
image = ‘[No Image]’
try:
description = goods.find_element_by_css_selector(“.a-size-base-plus.a-color-base.a-text-normal”).text
except:
description = ‘[No Description]’
if not ((maker == ‘[No Maker]’ or maker == ”)
and price == ‘[No Price]’ and image == ‘[No Image]’
and description == ‘[No Description]’) and
not (maker == previousMaker and price == previousPrice
and image == previousImage and description == previousDescription):
writer.writerow([no, maker, price, image, description])
no += 1
previousMaker = maker
previousPrice = price
previousImage = image
previousDescription = description
browser.close()

Pythonでスクレイピングのウエブブラウザ自動操作をseleniumでAmazonの例をPycharmで開発しています。

コメント

タイトルとURLをコピーしました