-
Notifications
You must be signed in to change notification settings - Fork 0
/
num_to_asin.py
40 lines (31 loc) · 1.42 KB
/
num_to_asin.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import requests
from bs4 import BeautifulSoup
from requests_kerberos import OPTIONAL, HTTPKerberosAuth
from constants import COLOR
def num_to_asin(prod_num, fc): # 26-32 sec for 150 elem
"""
FAILS IF PROD_NUM HAS 2 ASINS. SOLVE IT !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Get ASIN from product number on fcresearch-eu.
:param prod_num: str
:param fc: str
:return: str if success, None if prod_num not on fcresearch or connection not succesful
"""
url = f"http://fcresearch-eu.aka.amazon.com/{fc}/results/product?s={prod_num}"
cookie = {"fcmenu-employeeLogin": "null", "fcmenu-warehouseId": fc,
"fcmenu-locale": "en_US", "fcmenu-isAdvanced": "true",
"fcmenu-authMode": "openid", "fcmenu-employeePermissionLevel": ""}
print(COLOR + f"Converting {prod_num} to ASIN.")
r = requests.get(url, auth=HTTPKerberosAuth(mutual_authentication=OPTIONAL),
cookies=cookie)
if r.status_code == 200:
sp = BeautifulSoup(r.text, "html.parser")
rows = sp.find_all("tr")
for row in rows:
if row.find_all("th")[0].text == "ASIN":
asin = row.find_all("td")[0].text
return asin
if __name__ == "__main__":
product_number = "3474636333226"
fc = "MXP5"
print(num_to_asin(product_number, fc))
print(num_to_asin("4006501723284", "MXP5"))