def get_category_dict(url, driver: Driver = None): """amazonの全カテゴリのカテゴリ名とURLを辞書形式で取得する""" # カテゴリ一覧画面に遷移する driver.get(url) # htmlを解析 soup = BeautifulSoup(driver.page_source(), "lxml") # 全カテゴリのカテゴリ名: URLを保持する result = {} category_link_list = soup.select("#zg_browseRoot")[0].select("a") for elem in category_link_list: result[elem.text] = elem.get("href") return result
def scraping_all(): """amazonの全カテゴリの情報を取得する""" driver = Driver(True) try: # ランキングトップページへ遷移 driver.get(RNK_TOP_URL) driver.wait_until_presence_of_all_elements_located() time.sleep(1) # 遷移先を取得 category_dict = {} category_elems = driver.find_element(By.ID, "zg_browseRoot").find_elements( By.TAG_NAME, "a") for elem in category_elems: # 遷移先を辞書形式で取得。{カテゴリ名: url} category_dict[elem.text] = elem.get_attribute("href") # カテゴリごとに処理を実施 for k, v in category_dict.items(): # k=カテゴリ名, v=url # 【カテゴリ別商品一覧】商品別に値を取得する result_list = [[ "category", "ranking", "name", "price", "isprime", "stock", "delivery", "ASIN" ]] item_list = [] # CSVpath csv_path = CSV_ROOT_URL + k + ".csv" # カテゴリ別商品一覧画面の情報を取得する _get_item_overview_info(driver, v, k, item_list) _get_item_overview_info(driver, v + "&pg=2", k, item_list) for item in item_list: # 商品詳細情報を取得する _get_item_detail_info(driver, item, k, result_list) CSVio.write_list_to_csv(csv_path, result_list) break finally: driver.quit()
def get_category_list(url, driver: Driver = None): """amazonの全カテゴリのカテゴリ名とURLをリスト形式で取得する""" driver = Driver(True) try: # カテゴリ一覧画面に遷移する driver.get(url) # htmlを解析 soup = BeautifulSoup(driver.page_source(), "lxml") # 全カテゴリのカテゴリ名: URLを保持する result = [["category_name", "category_url"]] category_link_list = soup.select("#zg_browseRoot")[0].select("a") for elem in category_link_list: result.append([elem.text, elem.get('href')]) return result except Exception as err: logger.error(f"カテゴリ取得中にエラーが発生しました。error:{err}") return [] finally: driver.quit()