Python을 사용하여 Amazon 제품 가용성 확인

| | | | | |

알다시피 Python은 스크립팅에 널리 사용되는 다목적 언어입니다. 복잡한 계산을 해결하는 것뿐만 아니라 일상적인 작업을 자동화하는 데에도 사용됩니다. Amazon 제품의 가용성을 추적하고 제품의 가용성이 변경되면 거래를 성사하고 사용자에게 이메일로 가용성을 알리고 싶다고 가정해 보겠습니다. 이를 위한 Python 스크립트를 작성하는 것은 매우 재미있을 것입니다. 메모. 스크립트를 실행하기 전에 필요한 라이브러리(코드에 따라)를 설치하십시오. 또한 현재 제품을 사용할 수 없는 경우 사용자에게 이메일이 전송되지 않습니다. 사용자는 추적하려는 제품의 Asin ID를 제공해야 합니다.

사용된 각 모듈의 작업:
  • -> 요청: HTTP를 가져오고 게시하도록 하는 데 사용 요청
  • -> 시간: 현재 시간을 찾는 데 사용, 대기, 절전
  • -> 일정: 일정 간격 후에 기능이 다시 실행되도록 예약하는 데 사용됩니다. JavaScript의 "setInterval`ù 기능과 유사합니다.
  • -> smptlib: Python을 사용하여 이메일을 보낼 때 사용합니다.

# Amazon 제품 가용성 검사기용 Python 스크립트 # lxml에서 라이브러리 가져오기 import html 가져오기 시간에서 요청 가져오기 sleep 가져오기 시간 가져오기 일정 가져오기 smtplib # 가용성을 확인하려는 이메일 ID receiver_email_id = "EMAIL_ID_OF_USER" def check(url): headers = {` User-Agent`: `Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36`} # 당신이 GET 요청을 보내는 브라우저임을 보여주는 헤더 추가 page = requests.get(url, headers = headers) for i in range(20): # # 밀리초 또는 몇 초 동안 계속 확인하기 때문에 # 요청이 차단됩니다. sleep(3) # html 내용을 파싱하기 doc = html.fromstring(page .content) # 가용성 확인 XPATH_AVAILABILITY = `//div[@id ="availability"]//text()` RAw_AVAILABILITY = doc.xpath(XPATH_AVAILABILITY) AVAILABIL ITY = ``.join(RAw_AVAILABILITY).strip() if RAw_AVAILABILITY else 없음 return AVAILABILITY def sendemail(ans, product): GMAIL_USERNAME = "YOUR_GMAIL_ID" GMAIL_PASSWORD = "YOUR_GMAIL_PASSWORD" 수신자 본문 = 이메일_하위 이메일 ` # SMTP 세션 생성 s = smtplib.SMTP(`smtp.gmail.com`, 587) # 보안을 위한 TLS 시작 s.starttls() # 인증 s.login(GMAIL_USERNAME, GMAIL_PASSWORD) # 보낼 메시지 headers = " " .join(["from: " + GMAIL_USERNAME, "subject: " + email_subject, "to: " + recipient, "mime-version: 1.0", "content-type: text/html"]) content = headers + " " + body_of_email s.sendmail(GMAIL_USERNAME, 수신자, 콘텐츠) s.quit() def ReadAsin(): # Asin Id는 # 사용자가 제공해야 하는 제품 ID입니다. Asin = `B077PWK5BT` url = "http:// www.amazon.in/dp/" + Asin print("처리 중: "+url) ans = check(url) arr = [ `재고 1개 남았습니다.`, `재고 2개 남았습니다.`, `재고 있음 .`] print(ans) if an in arr: # s 사용자에게 보내는 이메일 종료 if # 제품을 사용할 수 있는 경우 sendemail(ans, Asin) # 1분마다 동일한 코드를 # 여러 번 실행하도록 예약 def job(): print("Tracking....") ReadAsin() schedule.every (1).minutes.do(job) while True: # 보류 중인 모든 작업/작업 실행 schedule.run_pending() time.sleep(1) 

출력:

추적.. .. 처리: http://www.amazon.in/dp/B077PWK5BT 재고 1개 남았습니다. 추적.... 처리: http://www.amazon.in/dp/B077PWK5BT 재고 1개 남았습니다. 추적.... 처리: http://www.amazon.in/dp/B077PWK5BT 재고 1개 남았습니다. 

JavaScript가 사용되는 경우 Python 요청으로 재고 가용성 검사기를 만드는 방법은 무엇입니까?

StackOverflow 질문

제품의 재고 여부를 확인하고 재고가 있을 때 이메일을 보내 알려주는 코드를 작성했습니다. 이것은 내가 찾고 있는 것이 html에 있을 때 작동합니다.

그러나 때로는 특정 개체가 JavaScript를 통해 로드됩니다. 웹 스크래핑이 JavaScript에서도 작동하도록 코드를 편집하려면 어떻게 해야 합니까?

지금까지의 코드는 다음과 같습니다.

가져오기 시간 가져오기 요청 while True: # IKEA 페이지의 URL 가져오기 url = `https://www.ikea.com/nl/nl/p/flintan-bureaustoel-vissle-zwart-20336841/` # 해당 페이지에서 텍스트를 가져와 모두 소문자로 입력 productpage = requests.get(url).text.lower() # 페이지에 있어야 하는 문자열 설정 제품을 사용할 수 없는 경우 outofstockstrings = [`niet beschikbaar voor 레버링`, `alleen beschikbaar in de winkel `] # 문자열인지 확인 웹페이지의 텍스트에 있습니다. if any(x in 제품 페이지 for x in outofstockstrings): time.sleep(1800) 계속 기타: # 나에게 이메일을 보내고 루프를 깨십시오. 

답:

HTML을 스크랩하고 분석하는 대신 비공식 스톡을 사용할 수 있습니다. IKEA 웹사이트에서도 사용하고 있는 API입니다. 그 API는 분석하기 더 쉬운 JSON 데이터를 반환하며 제품이 재고로 돌아오면 견적도 얻을 수 있습니다.

이런 종류의 정보를 제공하는 javascript/node로 작성된 프로젝트도 있습니다. 명령줄에서 바로: https://github.com/Ephigenia/ikea-availability-checker< /a>

네덜란드 전 매장의 의자 재고 수량을 쉽게 확인할 수 있습니다.

npx ikea-availability-checker stock --country nl 20336841 

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method