前提・実現したいこと
AmazonAPIの商品情報をPythonで取得することにしました。
ほしい情報をコマンドプロンプト上に表示するところまではできたのですが、取得結果をexcelファイルへの保存する為のコードの書き方がわかりません。
発生している問題・エラーメッセージ
該当のソースコード
test.py
下記はほしい情報をコマンドプロンプト上に表示するところまでのコードです。
# coding=utf8 import bottlenose from bs4 import BeautifulSoup import isbnlist_amazon ACCESS_KEY = "XXXXX" SECRET_ACCESS_KEY = "XXXXX" ASSOCIATE_TAG = "XXXXX-22" amazon = bottlenose.Amazon(ACCESS_KEY, SECRET_ACCESS_KEY, ASSOCIATE_TAG, Region="JP") for isbn in isbnlist_amazon.isbn: response = amazon.ItemLookup(ItemId=isbn, ResponseGroup="ItemAttributes", SearchIndex="Books", IdType="ISBN") soup = BeautifulSoup(response,"lxml") print(soup.title) response = amazon.ItemLookup(ItemId=isbn, ResponseGroup="SalesRank", SearchIndex="Books", IdType="ISBN") soup = BeautifulSoup(response,"lxml") print(soup.salesrank)
isbnlist_amazon.py
取得したいisbnが大量にある為、isbnは別ファイルのリストから読み込む方式をとっています。下記はテスト用として3つだけ設定しています。
isbn=[ '488379055X', '4150113521', '4091843999', ]
試したこと
import csv 略 def main(f): writer = csv.writer(f) 略 if __name__ == '__main__': with open('amazon.csv', 'w', newline='', encoding='shift_jis', errors='ignore') as f: main(f)
上記のコードを追記するなど、ネットで調べて出てきた通常のやり方と思われる書き出し方法は全部試したつもりです。
何かしらのエラーが出て止まるか、中身が白紙のエクセルファイルが作成されるところまでしかできませんでした。
コマンドプロンプトの内容をコピペする方法も考えたのですが、結果の行数が膨大になる為、ファイルへの書き出しをなんとかして実装したいと考えています。
試行錯誤の最終段階
ひとまず一番上の「elems = print(soup.title)」の内容をexcelに書き出すところまでやろうとしていました。
# coding=utf8 import csv import bottlenose from bs4 import BeautifulSoup import isbnlist_amazon ACCESS_KEY = "XXXXX" SECRET_ACCESS_KEY = "XXXXX" ASSOCIATE_TAG = "XXXXX-22" amazon = bottlenose.Amazon(ACCESS_KEY, SECRET_ACCESS_KEY, ASSOCIATE_TAG, Region="JP") def main(f): writer = csv.writer(f) for isbn in isbnlist_amazon.isbn: response = amazon.ItemLookup(ItemId=isbn, ResponseGroup="ItemAttributes", SearchIndex="Books", IdType="ISBN") soup = BeautifulSoup(response,"lxml") print(soup.title) response = amazon.ItemLookup(ItemId=isbn, ResponseGroup="SalesRank", SearchIndex="Books", IdType="ISBN") soup = BeautifulSoup(response,"lxml") print(soup.salesrank) if __name__ == '__main__': with open('amazon.csv', 'w', newline='', encoding='shift_jis', errors='ignore') as f: main(f)
補足情報(FW/ツールのバージョンなど)
- 環境はwindows10、python3.6.7rc1です
- sleepは完成後に追記する予定です
- csvじゃなく、txtでも構いません。
main関数はこの一行だけですか?
諸々省略されていて状況がわかりません。「ほしい情報をコマンドプロンプト上に表示するところまではできた」という部分のコードを提示してください。test.pyのprint文がそれでしょうか?
main関数の部分は下記のようにコードを書いていましたが、試行錯誤の途中のものなので質問文には含めていませんでした。 この記述がどこまで的を得た内容なのかもわかりませんm(__)m
def main(f):
writer = csv.writer(f)
for isbn in isbnlist_amazon.isbn:
response = amazon.ItemLookup(ItemId=isbn, ResponseGroup="ItemAttributes", SearchIndex="Books", IdType="ISBN")
soup = BeautifulSoup(response,"lxml")
elems = print(soup.title)
for elem in elems:
print(elem.getText())
csv_writer.writerows(elem)
「ほしい情報をコマンドプロンプト上に表示するところまではできた」のことでしたら、「test.py」の内容がそれに当たります。
ACCESS_KEY = "XXXXX" SECRET_ACCESS_KEY = "XXXXX" ASSOCIATE_TAG = "XXXXX-22" の部分は自分で取得したものを使用しています。
main関数の内容はここに書くと読みにくいので、試行錯誤中の内容でも質問に追記してください。
元の質問文に「試行錯誤の最終段階」という項目を追加しました。ご確認していただき、回答をいただければ幸いです。
回答1件
あなたの回答
tips
プレビュー