Skip to content

Commit

Permalink
Update v1.0.5
Browse files Browse the repository at this point in the history
・画像取り込みできない場合の対処
・使用するproxyの表示を削除
・README.mdの改修
  • Loading branch information
nanato12 committed Dec 17, 2019
1 parent 37b4db6 commit 454808c
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 26 deletions.
53 changes: 33 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,18 @@
[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg?logo=paypal&style=flat-square)](https://paypal.me/bluesquarejb/100)

Amazon scraping library
<br><br>

## Description
Amazonアソシエイトアカウントの申請が3回も落ちてムカついたので、スクレイピングライブラリを作成しました()<br>
APIではないので、アクセスキーやトークンは必要ありません。
<br><br><br>
v1.0.2からアクセス禁止回避のため、fake_useragentを追加しました。<br>
このため、予期せぬUAを取得した場合、titleやdescriptionがNoneになってしまう場合があります。
今の所、safariでのUAはNoneになっていません。
<br><br><br>
v1.0.4からアクセス禁止回避のため、proxy設定を追加しました。<br>
デフォルトで`False`になっていますが、無料プロキシ総当たりなので、稼働しているプロキシに接続できるまで時間がかかってしまう場合があります。
<br>
Falseで`time.sleep()`などを挟み、低速で使う事をオススメします。
<br><br>

## Latest information
**v1.0.5 Release**
使用したプロキシを表示するコードを削除。
また、imgタグの`US40`で製品の画像を絞り込んでいましたが、`SR38,50`などの製品もあり、画像取得ができなかったため、`config.py`に新しく`image_parts`というリストを追加しました。
このリストの中にある文字列とマッチしたものが製品画像に絞り込まれます。
他にも製品画像が`[]`になった場合の絞り込み要素を見つけ次第アップデートします。
気づき次第、プルクエストください。

## Installation

Expand All @@ -39,31 +38,40 @@ from amazonpy import Amazon

amazon = Amazon('B07T17NSJH', proxy=True)

print(amazon.get_title()) # タイトルの取得
print(amazon.get_title()) # タイトルを取得する。
# [コーチ] COACH バッグ ショルダーバッグ 斜めがけ MAE CROSSBODY レザー F34823 アウトレット [並行輸入品]

print(amazon.get_description()) # 製品の説明を取得
print(amazon.get_description()) # 製品の説明を取得する。
# ■品 番:F34823 SV/XR ■サイズ:約高さ27.5x幅30xマチ7cm ショルダー約103-119cm(3cm間隔で7段階調節可)  ■重 さ:約600g ■仕 様:開閉 :ファスナー式 内側 :ホックポケット1 外側 :ファスナーポケット1 ■素 材:レザー ■カラー:Carnation 金具シルバー ■付 属:箱なし、保存袋なし ■画像のお財布はサンプルにつき、付属しておりません。

print(amazon.get_url()) # 製品のURLを取得
print(amazon.get_url()) # 製品のURLを取得する。
# https://www.amazon.co.jp/dp/B07T17NSJH/

print(amazon.get_product_image_urls()) # 製品の画像を取得
# ['https://images-na.ssl-images-amazon.com/images/I/41VXva6p65L._AC_AC_.jpg', 'https://images-na.ssl-images-amazon.com/images/I/41eyyUG0IEL._AC_AC_.jpg', 'https://images-na.ssl-images-amazon.com/images/I/41pavjZNA5L._AC_AC_.jpg', 'https://images-na.ssl-images-amazon.com/images/I/31EM6kp5xrL._AC_AC_.jpg']
print(amazon.get_product_image_urls()) # 製品の画像を取得する。
# ['https://images-na.ssl-images-amazon.com/images/I/41VXva6p65L._AC_.jpg', 'https://images-na.ssl-images-amazon.com/images/I/41eyyUG0IEL._AC_.jpg', 'https://images-na.ssl-images-amazon.com/images/I/41pavjZNA5L._AC_.jpg', 'https://images-na.ssl-images-amazon.com/images/I/31EM6kp5xrL._AC_.jpg']

print(amazon.get_price()) # 販売価格の取得
print(amazon.get_price()) # 販売価格を取得する。
# 17800

print(amazon.get_ref_price()) # 参考価格の取得、参考価格が無い場合、Noneが返る
print(amazon.get_ref_price()) # 参考価格の取得、参考価格が無い場合、0が返る。
# 68040

print(amazon.get_down_ratio()) # 参考価格に対しての値引き率を取得、参考価格が無い場合、0が返る
print(amazon.get_down_ratio()) # 参考価格に対しての値引き率を取得、参考価格が無い場合、0が返る
# 74

print(amazon.get_another_type())
print(amazon.get_another_type()) # 色などの同じ製品の違うタイプの製品IDを取得する。
# ['B07MDJ5KG3', 'B07T17NSJH', 'B07PZJYLM7', 'B07Y57C6QZ', 'B07ZYFV9ZW', 'B07PZKPS68', 'B07Y4ZGWC9']
```

## Caution
v1.0.2からアクセス禁止回避のため、fake_useragentを追加しました。<br>
このため、予期せぬUAを取得した場合、titleやdescriptionがNoneになってしまう場合があります。<br>
今の所、safariのUAはNoneになっていません。<br>
<br><br>
v1.0.4からアクセス禁止回避のため、proxy設定を追加しました。<br>
デフォルトで`False`になっていますが、無料プロキシ総当たりなので、稼働しているプロキシに接続できるまで時間がかかってしまう場合があります。<br>
`False``time.sleep()`などを挟み、低速で使う事をオススメします。

## Update information

| version | information |
Expand All @@ -73,3 +81,8 @@ print(amazon.get_another_type())
| 1.0.2 | **Add fake-useragent.** <br>For avoid access prohibition. |
| 1.0.3 | **Change default values.** <br>`price`, `ref_price` default value is `0`. |
| 1.0.4 | **Add proxy setting.** <br>For avoid access prohibition. |
| 1.0.5 | **Add config img part.** <br>Add `img_parts` in `config.py`. |

## Donation
Please donate me.<br>
- [PayPal](https://paypal.me/bluesquarejb/100)
2 changes: 1 addition & 1 deletion amazonpy/amazon.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ def get_ref_price(self):
If it could not be obtained, return None
return
int or None
int
"""
return self.sc.ref_price

Expand Down
4 changes: 4 additions & 0 deletions amazonpy/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,7 @@ class Config:
"Referer": "https://www.amazon.co.jp/",
"User-Agent": ""
}

image_parts = ['US40', 'SR38']

image_url = 'https://images-na.ssl-images-amazon.com/images/I/{}._AC_.jpg'
7 changes: 4 additions & 3 deletions amazonpy/scrap.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ def __init__(self, product_id, proxy=False):
try:
self.html = requests.get(url=self.product_url, headers=self.header,
proxies={"https": f"https://{ip}:{port}"}).text
print(proxy)
break
except:
pass
Expand Down Expand Up @@ -56,8 +55,10 @@ def __get_images_urls(self):
url_list = []
for element in self.soup.find_all("img"):
image_url = element.get('src')
if 'US40' in image_url:
url_list.append(image_url.replace('US40', 'AC'))
for part in self.image_parts:
if part in image_url:
image_id = image_url.split('/')[-1].split('.')[0]
url_list.append(self.image_url.format(image_id))
self.img_list = url_list

def __get_price(self):
Expand Down
4 changes: 2 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@
name='amazonpy',
packages=['amazonpy'],

version='1.0.3',
version='1.0.5',

license='MIT',

install_requires=['bs4', 'fake-useragent'],
install_requires=['bs4', 'fake-useragent', 'requests'],

author='nanato12',
author_email='admin@nanato12.info',
Expand Down

0 comments on commit 454808c

Please sign in to comment.