Pythonを初めて数日の初心者で、プログラミングも勉強始めたばかりです。
最終的にWebスクレイピングができるようになりたいと思っています。
検索してもわからなく、つまづいているので詳しい方教えて下さいm(__)m
※Windows10のコマンドプロンプトから実行しています。
※Webスクレイピングの規約は確認しています。
★やりたいこと★
ホットペッパーで適当に検索したページになりますが、料理メニューの写真を
Webスクレイピングで取得して、指定のフォルダに保存したい。
■問題■
ページ内の写真を全て保存したいのですが、1枚しか保存されません。
どこをどう直したらいいかわかりません。
■参考にしているサイト■
https://hashikake.com/scraping_img#source
★使用しているコード★
Python
1#●画像ファイルをダウンロードするための準備 2# ①-①.ライブラリをインポート 3import time 4import re 5import requests 6from pathlib import Path 7from bs4 import BeautifulSoup 8# ①-②.出力フォルダを作成 9output_folder = Path('C:\python\img') 10output_folder.mkdir(exist_ok=True) 11# ①-③.スクレイピングしたいURLを設定 12url = 'https://www.hotpepper.jp/strJ001218137/food/' 13 14# ①-④.画像ページのURLを格納するリストを用意 15linklist = [] 16 17#●検索結果ページから画像のリンクを取り出す 18# ②-①.検索結果ページのhtmlを取得 19html = requests.get(url).text 20# ②-②.検索結果ページのオブジェクトを作成 21soup = BeautifulSoup(html, 'lxml') 22# ②-③.画像リンクのタグをすべて取得 23a_list =soup.select('div.columnPlex > p > a') 24# ②-④.画像リンクを1つずつ取り出す 25for a in a_list: 26# ②-⑤.画像ページのURLを抽出 27 link_url = a.attrs['href'] 28# ②-⑥.画像ページのURLをリストに追加 29 linklist.append(link_url) 30 time.sleep(1.0) 31 32 33# ③-⑦.画像ファイルの名前を抽出 34filename = re.search(".*/(.*png|.*jpg)$",link_url) 35# ③-⑧.保存先のファイルパスを生成 36save_path = output_folder.joinpath(filename.group(1)) 37time.sleep(1.0) 38# ●画像ファイルのURLからデータをダウンロード 39try: 40# ④-①.画像ファイルのURLからデータを取得 41image = requests.get(link_url) 42# ④-②.保存先のファイルパスにデータを保存 43open(save_path, 'wb').write(image.content) 44# ④-③.保存したファイル名を表示 45print(save_path) 46time.sleep(1.0) 47except ValueError: 48# ④-④.失敗した場合はエラー表示 49print("ValueError!")
宜しくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/26 10:02
2020/03/27 02:51