
pythonでAmazonのほしいものリストをローカルに保存するスクリプトを
パプレシティで作成したのですが、
スクリプトを実行すると
ほしいものリストの先頭ページしかローカル保存できません。
複数ページにまたがるほしいものリストの場合どのようにすればローカルに保存できますか?
アドバイスいただけると幸いです。よろしくおねがいします。
--------------------------------------------------------------------------
import requests
from bs4 import BeautifulSoup
import csv
def get_wishlist(wishlist_id):
url = f"https://www.amazon.co.jp/hz/wishlist/ls/{wishlist_id}"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.content, 'html.parser')
items = []
for item in soup.find_all('li', {'data-id': True}):
title = item.find('h2', {'class': 'a-size-base'}).text.strip()
price = item.find('span', {'class': 'a-price'})
price = price.text.strip() if price else 'N/A'
link = "https://www.amazon.co.jp" + item.find('a', {'class': 'a-link-normal'})['href']
items.append([title, price, link])
return items
def save_wishlist_csv(items, filename):
with open(filename, 'w', newline='', encoding='utf-8-sig') as f:
writer = csv.writer(f)
writer.writerow(['タイトル', '価格', 'リンク']) # ヘッダー行
writer.writerows(items)
# メインの実行部分
wishlist_id = input("Amazon wishlist IDを入力してください: ")
items = get_wishlist(wishlist_id)
if items:
filename = "amazon_wishlist.csv"
save_wishlist_csv(items, filename)
print(f"ほしいものリストを {filename} に保存しました。")
else:
print("ほしいものリストの取得に失敗しました。")

No.1ベストアンサー
- 回答日時:
nextやページボタンがあれば、そこにURLが書いてあると思いますので、BeatifulSoupで対象となるタグを検索し、'url'とか、'text'で、次のページurlを取得して、BeatifulSoupで新しいページとしてロードすればいいとは思います
(クエリパラメータでpage=1とか追加されるケースがほとんどだと思いますが・・・。もしかすると、JavaScriptでリンクを生成してるかもしれません。その場合には、JavaScriptを解析してデータを持ってくるしかないです)
ただ、今のget_wishlistは、URL固定なので、whileで、loadpage(url)で戻り値をsoupにして、next pageがあれば、urlに設定して、ループ、なければ、breakして、items を戻り値にするなどの変更が必要だとは思います
多分、ページ構成は同じだと思うので、タグ検索もそのまま使えると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba 正規表現について教えてく...
-
プログラム言語
-
pythonでのローカルファイルか...
-
if関数とは?
-
画像生成AIのプロンプトの作り...
-
CSVファイルの複数行削除
-
vba クリップボードクリアにつ...
-
プログラミングについて
-
今のプログラミング言語
-
自作scratch アニメの商用利用
-
OS入ってる機器のソフト・アプ...
-
Geminiフォーム 画像生成で 人...
-
pythonの実行に関する質問
-
uwscでPauseキーが押されたら、...
-
数学、プログラミング、物理、...
-
pip --versionがエラーになる
-
COPYコマンドで、最後に1文字...
-
ネットワークフォルダの中身を...
-
Python... 環境設定 初心者です...
-
パイソンのソースコードをChatG...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラム言語
-
vba クリップボードクリアにつ...
-
プログラミングについて
-
画像生成AIのプロンプトの作り...
-
自作scratch アニメの商用利用
-
今のプログラミング言語
-
CSVファイルの複数行削除
-
Python... 環境設定 初心者です...
-
Python 3.12.2 か一番最新のパ...
-
数学、プログラミング、物理、...
-
パイソンのソースコードをChatG...
-
pythonの実行に関する質問
-
pip --versionがエラーになる
-
Geminiフォーム 画像生成で 人...
-
OS入ってる機器のソフト・アプ...
-
Google ColaboでGUI作成
-
google Colabでmatplotlibの描...
-
Webサイト内に埋め込んだmp4動...
-
初心者powershellのPS1ファイル...
-
VBAでパワーシェルを実行したい...
おすすめ情報
ライブラリのインポート
python
import requests
from bs4 import BeautifulSoup
import csv
requests: HTTPリクエストを送信するためのライブラリです。
BeautifulSoup: HTMLを解析するためのライブラリです。
csv: CSVファイルを操作するためのライブラリです。
ほしい物リスト取得関数
python
def get_wishlist(wishlist_id):
url = f"https://www.amazon.co.jp/hz/wishlist/ls/{wishlist_id}"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}
この関数は、指定されたwishlist IDを使用してAmazonのほしい物リストページのURLを構築します。
headersにUser-Agentを設定し、ブラウザからのリクエストに見せかけています。
python
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.content, 'html.parser')
requests.get()でウェブページを取得し、BeautifulSoupを使用してHTMLを解析します。
python items = [] for item in soup.find_all('li', {'data-id': True}):
title = item.find('h2', {'class': 'a-size-base'}).text.strip()
price = item.find('span', {'class': 'a-price'}) price = price.text.strip() if price else 'N/A'
link = "https://www.amazon.co.jp" + item.find('a', {'class': 'a-link-normal'})['href']
items.append([title, price, link])
ページ内の各商品アイテムを検索し、タイトル、価格、リンクを抽出します。抽出した情報をitemsリストに追加します。
CSV保存関数
python
def save_wishlist_csv(items, filename):
with open(filename, 'w', newline='', encoding='utf-8-sig') as f:
writer = csv.writer(f)
writer.writerow(['タイトル', '価格', 'リンク']) # ヘッダー行
writer.writerows(items)
この関数は、取得した商品情報をCSVファイルに保存します。
ヘッダー行を追加し、その後に各商品の情報を書き込みます。
メイン実行部分
python
wishlist_id = input("Amazon wishlist IDを入力してください: ")
items = get_wishlist(wishlist_id)
if items:
filename = "amazon_wishlist.csv"
save_wishlist_csv(items, filename)
print(f"ほしいものリストを {filename} に保存しました。")
else:
print("ほしいものリストの取得に失敗しました。")
ユーザーからwishlist IDを入力として受け取ります。
get_wishlist()関数を呼び出してほしい物リストの情報を取得します。
取得に成功した場合、save_wishlist_csv()関数を使用してCSVファイルに保存します。
失敗した場合はエラーメッセージを表示します。