
Pythonでエクセルの情報を抜き出して、調べた情報をただ見て終わりではなくて、CSVへ登録したい。というのはなかなか多いと思います。
今回は、Pythonを使ったスクレイピングをして、最後にデータとして残す方法をお伝えしたいと思います。
スクレピングから抜き取ったデータをCSVへ

PythonでWebを開く
Webを開くのは下記のコードが参考になると思います。
1 2 3 |
from selenium import webdriver import chromedriver_binary driver = webdriver.Chrome() |
過去の記事で詳しく紹介しております。今回は、Webを開ける人を前提に作っており、リンクの記事にて作成したコードを加工しております。
検索後のページ情報を抜き取る
1 |
f.write('{}({})\n'.format(elem.find_element_by_class_name('LC20lb').text,elem.find_element_by_tag_name('a').get_attribute('href'))) |
上記コードの説明は、f.writeで書き込みを実行しています。なので、f.write(ここ)を見てほしいです。ここの部分に抽出方法が書かれています。
1 2 3 4 5 6 7 |
f.write( '{}({})\n'.format( elem.find_element_by_class_name('LC20lb').text , elem.find_element_by_tag_name('a').get_attribute('href') ) ) |
改行と半角スペースを入れて少し見やすくしてみました。elemが変数となっており、変数から抽出しています。
さらに、f.writeによって外部のテキストデータに格納もこれで完了させております。
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
from selenium import webdriver import chromedriver_binary import pandas as pd import time df = pd.read_excel('./KWサンプル.xlsx',sheet_name='Sheet1') print(df.head()) df_cnt = len(df) driver = webdriver.Chrome() driver.get('https://www.google.com/') for i in range(df_cnt): SearchTxt = driver.find_element_by_name('q') SearchTxt.clear() SearchTxt.send_keys(df.iloc[i,0]) SearchTxt.submit() time.sleep(3) f = open('./ScrapingResult' + str(i) + '.txt',mode='w',encoding='utf-8') elems = driver.find_elements_by_class_name('r') for elem in elems: try: f.write('{}({})\n'.format(elem.find_element_by_class_name('LC20lb').text,elem.find_element_by_tag_name('a').get_attribute('href'))) except: pass f.close() driver.close() |
まとめ
僕の今回の挑戦としては、スクレイピングした情報を保持することです。スクレピングはただ巡回するだけではほとんど意味がありません。
そのため、スクレピングをして巡回した情報を必要な形に加工して、そのデータを抽出できるようにしてこそ本来の力を発揮したと思います。
今回は、そんな僕の備忘録です。