scrapy两种发email邮件的方式带有附件(Excel表格附件)

查看文档https://scrapy-chs.readthedocs.io/zh_CN/1.0/topics/email.html#topics-email-settings可知有两种方式一种是smtplib,另一种是mailSender

一、使用mailSender

采坑点:attachs的参数问题,文档上写的需要的是元组,我这边一直报错,最后改为列表,成功运行。(u+"字符串",就是把中文转码,不然可能会报错)

源码:

today_date = datetime.date.today()
settings = scrapy.settings.Settings({'MAIL_FROM': 'zhzwx9@163.com', 'MAIL_HOST': 'smtp.163.com',
                                     'MAIL_PORT': '25', 'MAIL_USER': 'zhzwx9@163.com',
                                     'MAIL_PASS': 'FVDYFCDKVXGTVKNA'}, priority='project')
mailer = MailSender.from_settings(settings)
attach_name = "中新经纬.xlsx"
mimetype = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
file_object = open('中新经纬.xlsx', 'rb')
mailer.send(to=['zhzwcs3@126.com'], subject=str(today_date)+u"新舆情资源文件: 中新经纬.xlsx;", body='',
            cc=['zhzwx9@163.com'], attachs=[(attach_name, mimetype, file_object)], mimetype='text/plain')

二、使用smtplib

源码:

today_date = datetime.date.today();
HOST = "smtp.163.com"
# PORT = "465"
SUBJECT = str(today_date)+"新舆情资源文件: 中新经纬.xlsx;"
FROM = "zhzwx9@163.com"
TO = "zhzwcs3@126.com"
message = MIMEMultipart('related')

# 一般如果数据是二进制的数据格式,在指定第二个参数的时候,都使用base64,一种数据传输格式。
# 如果文件名是中文的:
# add_header()能够正常的显示中文;
# message_docx1['Content-Disposition']是无法正常显示中文的。

# message_docx1['Content-Disposition'] = 'attachment;filename=测试.docx'
message_docx1 = MIMEText(open('中新经纬.xlsx', 'rb').read(), 'base64', 'utf8')
# filename发送文件,附件显示的名称
message_docx1.add_header('content-disposition', 'attachment', filename='中新经纬.xlsx')
message.attach(message_docx1)

message['From'] = FROM
message['Subject'] = SUBJECT
message['To'] = TO

client = smtplib.SMTP_SSL(host=HOST)
client.connect(host=HOST)

print('result: ', client.login(FROM, 'FVDYFCDKVXGTVKNA'))

print('发送结果:', client.sendmail(from_addr=FROM, to_addrs=[TO], msg=message.as_string()))

 

Scrapy是一个快速、高层次的Web抓取和Web爬取框架,用于抓取网站数据并从页面中提取结构化的数据。在使用Scrapy爬取页面上的附件时,通常需要在爬虫的解析函数中编写代码来指定如何处理附件的下载。如果你遇到的情况是在页面上有多个附件但只想下载其中一个,你需要根据页面的结构和你关注的特定附件的特征来编写相应的选择器。 以下是一个简单的Scrapy爬虫代码示例,它展示了如何在解析函数中选择并下载特定的一个附件: ```python import scrapy class MySpider(scrapy.Spider): name = 'example_spider' start_urls = ['http://example.com/'] def parse(self, response): # 假设我们要下载的附件具有特定的特征,例如class为"target-file" target_file = response.xpath('//a[@class="target-file"]/@href').get() if target_file: yield scrapy.Request(url=target_file, callback=self.download_file) def download_file(self, response): # 这里编写文件下载的逻辑,例如保存文件名和内容 with open(response.url.split('/')[-1], 'wb') as f: f.write(response.body) ``` 在上述代码中,`parse` 函数用于解析起始URL响应,并查找特定的下载链接。这里我们使用了XPath选择器来定位具有特定class属性的链接,即我们要下载的文件的链接。找到目标链接后,我们通过`scrapy.Request`创建一个新的请求,并通过`callback=self.download_file`指定处理下载的回调函数。在`download_file`回调函数中,我们打开一个文件并将文件保存到本地。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值