Я хочу получать электронное письмо, когда товар возвращается на склад

#python #web-scraping #beautifulsoup

Вопрос:

Я пытаюсь заставить BeautifulSoup проверить эти веб-страницы, я добавил еще один товар, который есть в наличии в конце, чтобы смоделировать, когда они появятся на складе. Когда дело доходит до этого, возникает проблема и возникает ошибка. Я хочу, чтобы он либо 1) нашел что-то еще на этой странице и не выдал ошибку, либо 2) если он выдаст ошибку, я буду знать, что «Распродано» нет, а затем, если это так, я хочу, чтобы он отправил мне по электронной почте что-то простое, например, проверьте этот URL-адрес для элемента instock

 import smtplib  from bs4 import BeautifulSoup import requests import smtplib  url = [url1,url2,url3,url4] data = [] for pg in url:  page = requests.get(pg)  soup = BeautifulSoup(page.content, "html.parser")  soldout = soup.find_all(text="Sold Out")  parent = soldout[0].parent  cart = soup.find_all(text="Add to cart")  print(parent.string)  else:   gmail_user = 'email'  gmail_password = 'password'   sent_from = gmail_user  to = ['my email']  subject = 'Item is in stock'  body = 'link to in stock item'  email_text = """ From: %s To: %s Subject: %s  %s """ % (sent_from, ", ".join(to), subject, body)  try:  smtp_server = smtplib.SMTP_SSL('smtp.gmail.com', 465)  smtp_server.ehlo()  smtp_server.login(gmail_user, gmail_password)  smtp_server.sendmail(sent_from, to, email_text)  smtp_server.close()  print("Email sent successfully!") except Exception as ex:  print("Something went wrong….", ex)  

Вот программа, запущенная с ошибкой:

 Sold Out Sold Out Sold Out Sold Out Sold Out Sold Out Traceback (most recent call last):  File "***", line 19, in lt;modulegt;  parent = soldout[0].parent IndexError: list index out of range  Process finished with exit code 1    

Комментарии:

1. У него возникает проблема, когда дело доходит до этого, и возникает ошибка , Должны ли мы догадываться, в чем заключается ошибка? Обновите вопрос, чтобы включить сообщение об обратном отслеживании ошибок.

Ответ №1:

Вам необходимо предоставить больше кода и обновить свой вопрос сообщением об обратном отслеживании и конкретными ошибками, с которыми вы столкнулись. Возможно, также добавьте веб-сайт, который вы пытаетесь очистить.

Однако проверка инвентаря на веб-сайте-довольно простой процесс. Учесть следующее:

  • Добавьте товар в корзину (обычно это делается с помощью запроса на отправку, проверьте на вкладке «Сеть» браузера)
  • Проверьте, был ли товар успешно добавлен в корзину (оцените ответ на предыдущий запрос, если товар недоступен, должны появиться сообщения об ошибках)

Теоретически вы могли бы добавить тысячи товаров в корзину и проверить, позволяет ли это веб-сайт. Если вы столкнулись с ошибкой, уменьшите количество товара до тех пор, пока он не будет добавлен. Таким образом, вы можете узнать общее количество товаров на складе, вместо того, чтобы просто знать, что есть один товар в наличии.

Комментарии:

1. Я обновил код, чтобы включить ошибку. Проблема у меня в том, что товары очень редко бывают на складе, поэтому я не могу добавить их в корзину и у меня возникают проблемы с их проверкой, чтобы понять, в чем разница, только то, что «Распродано» уходит,

2. Извините, позвольте мне добавить, что у меня возникли проблемы, когда товар не появлялся, когда его не было в наличии в поле поиска. Но то, что я сделал, это нашел URL-адрес каждого товара, которого нет на складе, и это то, что я ищу «Распродано»