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も見ています
-
ハマっている「お菓子」を教えて!
この世には、おいしいお菓子がありすぎて……。 次何を食べたらいいか迷っています。 みなさんが今、ハマっている「お菓子」を教えてください!
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
ホテルを選ぶとき、これだけは譲れない条件TOP3は?
ホテルを探す時、予約サイトで希望条件の絞り込みができる便利な世の中。 あなたは宿泊先を決めるとき「これだけは譲れない」と思う条件TOP3を教えてください。
-
【お題】絵本のタイトル
【お題】 「ないた あかおに」「ねないこ だれだ」「はらぺこあおむし」みたいだけど、一体これどういう内容?と思った絵本のタイトルを教えて下さい
-
架空の映画のネタバレレビュー
映画のCMを見ていると、やたら感動している人が興奮で感想を話していますよね。 思わずストーリーが気になってしまう架空の感動レビューを教えて下さい!
-
近年誕生したプログラミング言語
その他(プログラミング・Web制作)
-
Pythonのコードエラーについてです。
その他(プログラミング・Web制作)
-
プログラミングの進学について
その他(プログラミング・Web制作)
-
-
4
逆コンパイルと逆アセンブルの違いはなんですか
C言語・C++・C#
-
5
プログラミング言語について
その他(プログラミング・Web制作)
-
6
python エラー
その他(プログラミング・Web制作)
-
7
c++の勉強方法を教えてくださいプログラミングをやった事がなく1から勉強を始めようと思います1日1時
C言語・C++・C#
-
8
Python... 環境設定 初心者です。ビジネス用?の 有償版anacondaを使えない状況です、
その他(プログラミング・Web制作)
-
9
文系のSE志望です。プログラミングを今から習得したいのですが、初めて学ぶのにオススメの言語があれば教
その他(プログラミング・Web制作)
-
10
10進数からN進数に変換するプログラミング(C言語)
C言語・C++・C#
-
11
どうして+3
C言語・C++・C#
-
12
Win11で作業を自動化したいです。どんなソフトがありますか?教えて下さい。単にマウスで特定の場所を
その他(プログラミング・Web制作)
-
13
今ってプログラミング言語は何が中心?
C言語・C++・C#
-
14
プログラマーに向いている人の特徴や性格は何がありますか?
その他(プログラミング・Web制作)
-
15
プログラミングについて プログラミングの練習(勉強)ができるようなサイトなどありませんか? あれば教
その他(プログラミング・Web制作)
-
16
プログラミングを学ぼうと思います。 1ヶ月程度である程度習得できる言語は何ですか?ブラウザ上でアプリ
その他(プログラミング・Web制作)
-
17
AIのプログラムについて教えてください
その他(プログラミング・Web制作)
-
18
Windowsのアプリ開発ってなんのためにするんですか? Excelで入力、更新、表示、検索、削除、
その他(プログラミング・Web制作)
-
19
プログラミングの課題がわからないので教えていただきたいです。特にサークル関数を定義した後に呼び出す方
C言語・C++・C#
-
20
0 == False はいいけど
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コトリン言語について。
-
Google ColaboでGUI作成
-
このURLで広告を出しているのは...
-
Web初心者です。 簡易的なWebペ...
-
pythonでAmazonのほしいものリ...
-
Pythonでの文字列からfloatへの...
-
google Colabでmatplotlibの描...
-
AIのプログラムについて教えて...
-
プログラミングについて プログ...
-
プログラミングの進学について
-
python エラー
-
P2P地震速報のEEW APIの仕様書...
-
マイクロソフトがvbを捨てたの...
-
AIの登場でプログラマーたちが...
-
VBAでパワーシェルを実行したい...
-
vba クリップボードクリアにつ...
-
プログラミングを学ぼうと思い...
-
以下の技能を無料で受講できる...
-
ネットワークフォルダの中身を...
-
プログラマーに向いている人の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vba クリップボードクリアにつ...
-
プログラミングについて プログ...
-
Google ColaboでGUI作成
-
AIのプログラムについて教えて...
-
プログラミングを学ぼうと思い...
-
プログラミングの進学について
-
Web初心者です。 簡易的なWebペ...
-
python エラー
-
以下の技能を無料で受講できる...
-
pythonでAmazonのほしいものリ...
-
ネットワークフォルダの中身を...
-
このURLで広告を出しているのは...
-
Stable diffusionのファイルに...
-
VBAでパワーシェルを実行したい...
-
HTMLソースが表示のページのも...
-
テキストファイルの1行目のみを...
-
過剰なオブジェクト指向脳から...
-
htaccessで特定のディレクトリ...
-
Pythonでの文字列からfloatへの...
-
Google Colabでimport soxが出...
おすすめ情報
ライブラリのインポート
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ファイルに保存します。
失敗した場合はエラーメッセージを表示します。