【发布时间】: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