このブログではPythonを使ったスクレイピングを、初心者向けにサンプルコード付きで解説しています。以下に紹介する記事では、①から⑨のステップでスクレイピングの方法を学び、実践に役立てられるよう体系的にまとめています。
                        【①〜⑨まとめ】PythonでWebスクレイピングを実践する方法【サンプルコード付き】
このブログではPythonスクレイピングを初心者向けに解説していきます。順番に各記事で解説しており入門者向けです。サンプルコード付きで解説するので実践的…
            
この記事ではPythonスクレイピングで取得したデータをCSVファイルに書き出す方法について解説していきます。
スクレイピングの基本や、データの整形方法などについては以下の記事で解説しています。
                        ①【Requests】BeautifulSoupを使ったスクレイピングの基本を解説【サンプルコード】
このブログではPythonを使ったスクレイピングを、初心者向けにサンプルコード付きで解説しています。以下に紹介する記事では、①から⑨のステップでスクレイピ…
                        ⑧Pythonでスクレイピングしたデータを整形する方法
このブログではPythonを使ったスクレイピングを、初心者向けにサンプルコード付きで解説しています。以下に紹介する記事では、①から⑨のステップでスクレイピ…
            
 
サンプルコード全文
| 
					 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53  | 
						import requests from bs4 import BeautifulSoup from urllib.parse import urljoin import os import csv #指定ページから各リンクを見つける def find_links():     url = 'https://scraping-training.vercel.app/site?postCount=20&title=%E3%81%93%E3%82%8C%E3%81%AF{no}%E3%81%AE%E8%A8%98%E4%BA%8B%E3%81%A7%E3%81%99&dateFormat=YYYY-MM-DD&isTime=true&timeFormat=&isImage=true&interval=360&isAgo=true&countPerPage=0&page=1&robots=true&'     webpage_response = requests.get(url)     webpage_content = webpage_response.content     webpage_soup = BeautifulSoup(webpage_content, "html.parser")     base_url = 'https://scraping-training.vercel.app'     links = []     count = 0     a_tags = webpage_soup.select(".post-link")     if a_tags:             for a_tag in a_tags:                 href = a_tag.get('href')                 href = urljoin(base_url, href)                 title_div = a_tag.select_one(".post-title").text.strip()                  # 辞書に格納                 data_dict = {"id": count, "記事タイトル": title_div, "url": href}                 links.append(data_dict)                 count += 1     return links # 関数を実行し、戻り値を受け取る links = find_links() save_directory = '/sample_folder'  csv_filename = 'links.csv' filepath = os.path.join(save_directory, csv_filename) # ファイルがすでに存在する場合は関数をスキップする if os.path.exists(filepath):     print("CSVファイルがすでに存在します:", filepath) else:     # ディレクトリが存在しない場合は作成する     os.makedirs(save_directory, exist_ok=True)     # リンクをCSVに保存     with open(filepath, 'w', newline='', encoding='utf-8') as csvfile:         writer = csv.writer(csvfile)         writer.writerow(["id", "記事タイトル", "url"])  # ヘッダーを書き込む         for link in links:             writer.writerow([link["id"], link["記事タイトル"], link["url"]])     print("メーカーリンクをCSVに保存しました:", filepath)  | 
					
以下、解説していきます。
コードの解説
関数を実行し、戻り値を受け取る
| 
					 1  | 
						links = find_links()  | 
					
find_links() 関数を実行して、リンクデータを取得します。この関数は、リンク(記事のタイトルやURL)を含む辞書形式のデータリストを返します。結果は links というリストに格納されます。
保存先を指定
| 
					 1 2 3  | 
						save_directory = '/sample_folder'  csv_filename = 'links.csv' filepath = os.path.join(save_directory, csv_filename)  | 
					
・save_directory には、保存先のディレクトリを指定しています。
・csv_filename は保存するファイル名です。
・os.path.join(save_directory, csv_filename) を使って、ディレクトリとファイル名を組み合わせたフルパスを生成し、filepath に格納します。これで保存するファイルの完全なパスが得られます。
ファイルの存在チェック
| 
					 1 2 3 4 5  | 
						if os.path.exists(filepath):     print("CSVファイルがすでに存在します:", filepath) else:     # ディレクトリが存在しない場合は作成する     os.makedirs(save_directory, exist_ok=True)  | 
					
・os.path.exists(filepath) を使って、指定した filepathが既に存在するかどうかを確認します。
・ファイルが存在する場合は、”CSVファイルがすでに存在します” というメッセージを出力して処理を終了します。これにより、無駄な上書きやファイル作成を避けることができます。
・os.makedirs(save_directory, exist_ok=True) を使って、指定したディレクトリ(save_directory)が存在しない場合に作成します。exist_ok=True は、既にディレクトリが存在する場合はエラーを発生させないための設定です。
CSVに保存する
| 
					 1 2 3 4 5 6 7  | 
						with open(filepath, 'w', newline='', encoding='utf-8') as csvfile:         writer = csv.writer(csvfile)         writer.writerow(["id", "記事タイトル", "url"])  # ヘッダーを書き込む         for link in links:             writer.writerow([link["id"], link["記事タイトル"], link["url"]])     print("メーカーリンクをCSVに保存しました:", filepath)  | 
					
・open(filepath, ‘w’, newline=”, encoding=’utf-8′) を使って、CSVファイルを「書き込みモード」で開きます。’w’ は書き込みモードを意味し、encoding=’utf-8′ でファイルの文字コードをUTF-8に指定しています。
・csv.writer(csvfile) でCSVファイルに書き込むためのライターオブジェクトを作成します。
・writer.writerow([“id”, “記事タイトル”, “url”]) は、CSVファイルのヘッダー(列の名前)を1行目に書き込みます。この場合、”id”、”記事タイトル”、”url” という3つの列を作成します。
・for link in links: のループ内では、links の各要素(辞書形式)に対して writer.writerow([link[“id”], link[“記事タイトル”], link[“url”]]) を実行し、それぞれのリンク情報をCSVファイルに1行ずつ書き込みます。
このようにして、スクレイピングしたデータをCSVファイルに書き込んでいます。
CSVファイルをMySQLデータベースにインポートする方法は以下の記事で解説しています。
                        PythonスクレイピングしたデータをMySQLデータベースにインポートする方法を解説
この記事ではPythonでスクレイピングしたデータをMySQLデータベースにインポートする方法を解説しています。 Pythonウェブスクレイピングの基本についてはこ…