Python 爬行器运行时一次发送一封刮擦式电子邮件
当spider完成抓取页面时,我正试图用gmail发送电子邮件。当我定义函数send_mail并像下面一样传递它时,在日志中,它说send_mail(“一些消息”,“刮板报告”) NameError:name'send_mail'未定义..蜘蛛抓取完成后如何发送gmail。当我在def parse(self,response)方法中传递send_mail函数时,它试图阻止我的gmail,这是由于刮取的循环Python 爬行器运行时一次发送一封刮擦式电子邮件,python,email,scrapy,scrapy-spider,Python,Email,Scrapy,Scrapy Spider,当spider完成抓取页面时,我正试图用gmail发送电子邮件。当我定义函数send_mail并像下面一样传递它时,在日志中,它说send_mail(“一些消息”,“刮板报告”) NameError:name'send_mail'未定义..蜘蛛抓取完成后如何发送gmail。当我在def parse(self,response)方法中传递send_mail函数时,它试图阻止我的gmail,这是由于刮取的循环 class ekantipurSpider(XMLFeedSpider): na
class ekantipurSpider(XMLFeedSpider):
name= "ekantipur"
allowed_domains = ["ekantipur.com"]
start_urls = [
'http://www.ekantipur.com/archive/'
]
send_mail("some message", "Scraper Report")
def parse(self, response):
hxs = HtmlXPathSelector(response) # The xPath selector
titles=hxs.select('//div[@id = "archive-content-wrapper"]//ul/li')
items = []
for titles in titles:
item = NewsItem()
item['title']=titles.select('h6/a/text()').extract()[0]
item['link']=titles.select('h6/a/@href').extract()[0]
item['description']=titles.select('p/text()').extract()[0]
item = Request(item['link'],meta={'item':item},callback=self.parse_detail)
items.append(item)
return items
def parse_detail(self,response):
item = response.meta['item']
sel = HtmlXPathSelector(response)
detail = sel.select('//div[@class = "main_wrapper_left"]')
item['details'] = escape(''.join(detail.select('p/text()').extract()))
locationDate = item['details'].split(':',1)[0]
item['location']= locationDate.split(",",1)[0]
item['published_date'] = escape(''.join(detail.select('p[last()]/text()').extract()))
return item
def send_mail(self, message, title):
print "Sending mail..........."
gmailUser = 'manthali2014@gmail.com'
gmailPassword = 'rameshkc8 '
recipient = 'kcramesh8@gmail.com'
msg = MIMEMultipart()
msg['From'] = gmailUser
msg['To'] = recipient
msg['Subject'] = title
msg.attach(MIMEText(message))
mailServer = smtplib.SMTP('smtp.gmail.com', 587)
mailServer.ehlo()
mailServer.starttls()
mailServer.ehlo()
mailServer.login(gmailUser, gmailPassword)
mailServer.sendmail(gmailUser, recipient, msg.as_string())
mailServer.close()
print "Mail sent"
如果它们属于同一类,则需要添加
self.
以发送邮件(self.send\u mail(args)
)。如果没有,则需要在定义函数后调用send_mail() defn和call中的参数不匹配