Сценарий: у меня есть сценарий scrapy, который удаляет сайт. Как только нужное ключевое слово будет найдено в сломанной детали, оно отправит письмо. Есть сайт, который меняет данные каждые 30 минут, мне нужно снова отказаться от определенного ключевого слова и отправить электронное письмо, если оно найдено. Как я могу зацикливаться каждые 30 минут в Scrapy Python.
Код:
# -*- coding: utf-8 -*-
import scrapy
from scrapy.http import Request
import smtplib
from email.mime.text import MIMEText
import time
class NewFilmSpiderSpider(scrapy.Spider):
name = 'new_film_spider'
allowed_domains = ['www.xxx.in']
start_urls = ['https://www.xxx.in/xxx/now-showing']
def parse(self, response):
t = threading.Thread(self.getDetails(response))
t.start()
def getDetails(self, response):
FROM_ADDRESS = 'xxx@gmail.com'
PASSWORD = 'xxx'
TO_ADDRESS= 'xxx@gmail.com'
HOST='smtp.gmail.com'
PORT=587
records = response.xpath('//section[@class="main-section"]/section[2]/section[@class="movie__listing now-showing"]/ul/li/div/dl/dt/a/text()').extract()
if 'KEYWORD' in str(records):
receivers = [TO_ADDRESS]
msg="Booking Opened"
try:
smtpObj = smtplib.SMTP(HOST,PORT)
smtpObj.set_debuglevel(1)
smtpObj.ehlo()
smtpObj.starttls()
smtpObj.login(FROM_ADDRESS,PASSWORD)
smtpObj.sendmail(FROM_ADDRESS, receivers, msg)
smtpObj.quit()
print "Successfully sent email"
except Exception as e:
print "Error: unable to send email"
time.sleep(60) #checking for every minute
Этот код запускает скрипт и отправляет почту. Я не знаю, как это сделать. Любые выводы будут полезны. Спасибо.
Обновление № 1:
Я пробовал с потоками. как указано в ответе. но программа останавливается после двух циклов.
Обновление № 2:
Я забыл добавить пока. Работает