Pythonを使いスクレイピングのコードを書いております。
アパレルブランドのサイトから、商品カテゴリー名、商品名、商品画像を取得し
カテゴリー名 > 商品名 > 商品画像 という風にフォルダを作成し保存をしたいです。
下記画像のようなイメージで辞書の中にリストを作成したいです。
(カテゴリー名、商品名はスクレイピングした際に取得された数だけ作成したいので、この図のように数が固定されている訳ではありません。)
私自身プログラミング初心者で、これをどのようにプログラミングすれば効率よく作成できるのかがわかりません。
今途中まで書いているコードがこちらになります
Python
1import requests 2from bs4 import BeautifulSoup 3import pprint 4import os 5from urllib.parse import urljoin 6import itertools 7 8sex_URL = "https://www.gucci.com/jp/ja/ca/men-c-men" 9soup = BeautifulSoup(requests.get(sex_URL).content,'lxml') 10 11def make_folder(category_folder_name): 12 os.makedirs("/Users/AA/Desktop/GUCCI/メンズ/" +category_folder_name,exist_ok=True) 13 14#カテゴリ毎のURLを取得し、相対パスを絶対パスに変換 15#item_category_listにURLを格納 16base = "https://www.gucci.com/jp/ja/" 17item_category_link = soup.find_all("a",class_="category-product") 18item_category_list = [] 19for item_category_link in item_category_link: 20 item_category_list.append(urljoin(base,item_category_link.get("href"))) 21print(item_category_list) 22 23item_category_name = soup.select("header > h2") 24item_category_name_list = [] 25for item_category_name in item_category_name: 26 item_category_name_list.append((item_category_name).getText()) 27 make_folder((item_category_name).getText()) 28print(item_category_name_list) 29 30#item_category_listとitem_category_name_listのリストを1つのディクショナリに変換 31keys = item_category_name_list 32values = item_category_list 33category = dict(zip(keys,values)) 34print(category) 35 36#カテゴリ毎にURLを解析する 37base = "https://www.gucci.com/jp/ja/" 38item_list = [] 39for category_name in category: 40 soup= BeautifulSoup(requests.get(category[category_name]).content,'lxml') 41 item_link = soup.find_all("a",class_="product-tiles-grid-item-link") 42 for item_link in item_link: 43 item_list.append(urljoin(base,item_link.get("href")) 44 print(item_list)
このコードを書いていて、最初に多次元の辞書を宣言してその中に取得した値を追加していく方法はないのかなと思いました。
自分で色々調べたのですが、そもそも多次元の辞書を空の状態で宣言できるのかと、宣言できたとしても
そこにどのようにリストや辞書を追加すればいいのかがわかりません。
ご教授いただけたらと思います。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/15 06:05