【问题标题】:I want to receive an email when an item goes back in stock我想在商品有货时收到一封电子邮件
【发布时间】:2021-11-18 20:20:36
【问题描述】:

我正在尝试让 BeautifulSoup 检查这些网页,我在最后添加了一件有货的商品,以模拟它们何时有货。当涉及到这个问题并抛出错误时,它遇到了问题。我希望它要么 1)在该页面上找到其他内容并且不抛出错误,或者 2)如果它抛出错误,我将知道“Sold Out”不存在,然后如果是这种情况我想要它通过电子邮件向我发送一些简单的信息,例如检查此 url 以获取库存商品

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 <module>
    parent = soldout[0].parent
IndexError: list index out of range

Process finished with exit code 1


【问题讨论】:

  • 遇到问题并抛出错误我们是否应该猜测错误是什么?更新问题以包含错误回溯消息。

标签: python web-scraping beautifulsoup


【解决方案1】:

您需要提供更多代码并使用回溯消息和遇到的具体错误更新您的问题。也许还可以添加您要抓取的网站。

但是,检查网站中的库存是一个非常简单的过程。考虑以下几点:

  • 将商品添加到购物车(通常通过 POST 请求完成,请查看浏览器的网络选项卡)
  • 检查商品是否已成功添加到购物车(评估 对上一个请求的响应,如果该项目不可用,则应显示错误消息)

理论上,您可以将数千件商品添加到购物车并检查网站是否 允许它。如果遇到错误,请降低项目的数量,直到项目 被添加。这样您就可以知道库存商品的总数, 而不是只知道有一个可用的项目。

【讨论】:

  • 我更新了代码以包含错误。我遇到的问题是这些物品很少有库存,所以我无法将其添加到购物车中,并且在检查它以查看有什么区别时遇到问题,只是“售罄”消失了,
  • 对不起,让我补充一下,当商品在搜索字段中缺货时,我遇到了问题。但我所做的是找到每件缺货商品的网址,这就是我搜索“已售罄”的内容
猜你喜欢
  • 1970-01-01
  • 2019-11-05
  • 2012-05-08
  • 1970-01-01
  • 2015-05-22
  • 1970-01-01
  • 2022-01-17
  • 2021-01-16
  • 1970-01-01
相关资源
最近更新 更多