Я пытаюсь настроить скрипт для отправки мне электронного письма, когда телефон соответствует моему порогу цены и состояния на swappa.com.Я дошел до того, что могу отправить по электронной почте последнее сообщение, которое соответствует моим критериям, но я немного постучался.Мне нужно, чтобы электронное письмо отправлялось мне только тогда, когда новый пост соответствует моим критериям.В настоящее время он будет отправлять мне электронное письмо при каждом запуске скрипта, независимо от того, является ли список новым.
Я очень плохо знаком с Python и провел большую часть вчера и сегодня, ковыряя этот скрипт, но любойпонимание и информация, которые помогли бы достичь моей цели, будут высоко оценены!
from bs4 import BeautifulSoup
import re
import requests
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
# define the url in a variable and get the content
page_url = 'https://swappa.com/buy/google-pixel-2-xl-unlocked?sort=date_min'
page_content = requests.get(page_url)
# Put the content into a variable using BeautifulSoup
swappa = BeautifulSoup(page_content.text, 'html.parser')
# Pull text from the h1 tag
phone_name = swappa.h1
# Pull the device details into a list
condition = swappa.find(class_='condition_label')
color = swappa.find(class_='color_label')
storage = swappa.find(class_='storage_label')
price = swappa.find(class_='price')
links = []
for link in swappa.findAll('a', attrs={'href': re.compile("^/listing")}):
links.append(link.get('href'))
listing_detail = [
phone_name.contents[0], condition.contents[0], color.contents[0], storage.contents[0],
'$' + price.contents[1], 'https://swappa.com' + links[0]
]
def listing_result():
if (price.contents[1] <= '420') and (condition.contents[0] == 'Good' or condition.contents[0] == 'Mint'):
return listing_detail
with open("result.txt", "w+") as result_file:
result_file.write(str(listing_result()))
with open('result.txt', 'r') as result_file_read:
result_data = result_file_read.read().replace('\n', '')
if result_data != result_file:
# setup sending an email via SMTP
server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
server.login("redacted", "redacted")
# use mime to send email
msg = MIMEMultipart()
# setup parameters of the email
msg['From'] = 'redacted'
msg['To'] = 'redacted'
msg['Subject'] = 'Swappa - New Pixel 2 XL Listing'
# add in the message body
body = str(listing_result())
body = MIMEText(body) # convert the body to a MIME compatible string
msg.attach(body) # attach it to your main message
# send the email
server.send_message(msg)
del msg
Моя идея состояла в том, чтобы последний листинг был отправлен в текстовый файл, а затем содержимое этого текстового файла было сохранено в переменной.чтобы я мог сравнить его с создаваемым текстом.Однако я не знаю, как этого добиться.