###前提・実現したいこと
ASINコードを実行するとAmazonサイトから商品名と価格、画像をそれぞれ1件ずつスクレイピングするコードをPythonで書いています。
下記ブログ記事の、Webスクレイピングを利用してWebサイトから画像データのダウンロードするコードとうまく組み合わせて実現しようとしています。
###発生している問題・エラーメッセージ
ASINコードを実行するとAmazonサイトから商品名と価格、画像をそれぞれ1件ずつスクレイピングするコードで画像を商品名や価格と同じように取得すると長い文字列が返されてしまいました。
Python
1#!/usr/bin/env python 2# -*- coding: utf-8 -*- 3from email.MIMEMultipart import MIMEMultipart 4from email.MIMEText import MIMEText 5from email.Utils import COMMASPACE, formatdate 6from selenium import webdriver 7from selenium.common.exceptions import NoSuchElementException 8from selenium.webdriver.common.keys import Keys 9from sys import exit 10from time import sleep 11import argparse 12import datetime 13import requests 14import os 15import urllib2 16 17DELAY_SLEEP = 1 18 19def main(): 20 parser = argparse.ArgumentParser(description='Get product information from \ 21Amazon.co.jp') 22 parser.add_argument('--asin', nargs='+') 23 args = parser.parse_args() 24 25 products = {} 26 for a in args.asin: 27 products[a] = {'url': "http://www.amazon.co.jp/dp/" + a} 28 29 for k,v in products.iteritems(): 30 driver = webdriver.PhantomJS() 31 try: 32 33 # login first 34 driver.get(v['url']) 35 driver.set_window_size(1920, 1080) 36 driver.implicitly_wait(DELAY_SLEEP) 37 print "+ " + driver.current_url 38 39 # Product name 40 elem = driver.find_element_by_xpath('//*[@id="productTitle"]') 41 v['name'] = elem.text.strip() 42 43 # Product price 44 elem = driver.find_element_by_xpath('//*[@id="priceblock_ourprice"]\ 45') 46 v['price'] = elem.text.strip() 47 48 # Product image 49 elem = driver.find_element_by_xpath('//*[@id="landingImage"]') 50 image_url = elem.get_attribute("src") 51 useragent = 'sample' 52 r = urllib2.Request(image_url, headers={'User-Agent': useragen\ 53t}) 54 f = urllib2.urlopen(r) 55 v['image'] = f.read() 56 57 except NoSuchElementException: 58 print v['url'] + ": not available" 59 except Exception as e: 60 print e 61 driver.close() 62 exit(1) 63 64 driver.close() 65 66 for v in products.values(): 67 print v['name'], v['price'], v['image'] 68 69if __name__ == "__main__": 70 main()
useragent = 'sample'の部分はそれぞれの環境で設定することになると思います。
###該当のソースコード
Webスクレイピングを利用してWebサイトから画像データのダウンロードするコード
Python
1#ライブラリの取り込み 2import urllib.request 3#URLと保存パスを指定 4url = " http://su-gi-rx.com/wp-content/uploads/2017/07/Python.jpg" 5savename = "test.png" 6 7#ダウンロード 8urllib.request.urlretrieve(url, savename) 9print("保存しました")
###補足情報(言語/FW/ツール等のバージョンなど)
Python 2系を使用
回答1件
あなたの回答
tips
プレビュー