web-dev-qa-db-ja.com

Beautifulsoup-画像を開いてダウンロードする方法

こちら からフルサイズの商品画像を取得したいと思っています。

私の考えは:

  • 画像リンクをたどる
  • 写真をダウンロード
  • 戻る
  • N +1枚の写真について繰り返します

画像のサムネイルを開く方法は知っていますが、フルサイズの画像を取得する方法はわかりません。これをどのように行うことができるかについてのアイデアはありますか?

9
Ninja2k

これにより、画像のすべてのURLが取得されます。

import urllib2
from bs4 import BeautifulSoup

url = "http://icecat.biz/p/Toshiba/pscbxe-01t00een/satellite-pro-notebooks-4051528049077-Satellite+Pro+C8501GR-17732197.html"
html = urllib2.urlopen(url)
soup = BeautifulSoup(html)

imgs = soup.findAll("div", {"class":"thumb-pic"})
for img in imgs:
        print img.a['href'].split("imgurl=")[1]

出力:

http://www.Toshiba.fr/contents/fr_FR/SERIES_DESCRIPTION/images/g1_satellite-pro-c850.jpg
http://www.Toshiba.fr/contents/fr_FR/SERIES_DESCRIPTION/images/g4_satellite-pro-c850.jpg
http://www.Toshiba.fr/contents/fr_FR/SERIES_DESCRIPTION/images/g2_satellite-pro-c850.jpg
http://www.Toshiba.fr/contents/fr_FR/SERIES_DESCRIPTION/images/g5_satellite-pro-c850.jpg
http://www.Toshiba.fr/contents/fr_FR/SERIES_DESCRIPTION/images/g3_satellite-pro-c850.jpg

そして、このコードはそれらの画像をダウンロードして保存するためのものです:

import os
import urllib
import urllib2
from bs4 import BeautifulSoup

url = "http://icecat.biz/p/Toshiba/pscbxe-01t00een/satellite-pro-notebooks-4051528049077-Satellite+Pro+C8501GR-17732197.html"
html = urllib2.urlopen(url)
soup = BeautifulSoup(html)

imgs = soup.findAll("div", {"class":"thumb-pic"})
for img in imgs:
        imgUrl = img.a['href'].split("imgurl=")[1]
        urllib.urlretrieve(imgUrl, os.path.basename(imgUrl))
20
4d4c