python爬取英语学习资料并发送邮件
新建发送邮件类
import smtplib
from email.mime.text import MIMEText
from email.header import Header
class SendMail:
def __init__(self):
self.sender = 'xx@qq.com'
self.receivers = ['xx1@qq.com','xx2@qq.com'] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱
self.smtp_server = 'smtp.qq.com'
self.smtp_pwd = 'xx'
self.stmp_port = 25
def sendMessage(self, title, msg):
# 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
message = MIMEText(msg, 'plain', 'utf-8')
message['From'] = self.sender
message['To'] = ';'.join(self.receivers)
message['Subject'] = Header(title, 'utf-8')
smtpObj = smtplib.SMTP(self.smtp_server, self.stmp_port)
smtpObj.starttls()
smtpObj.login(self.sender, self.smtp_pwd)
smtpObj.sendmail(self.sender, self.receivers, message.as_string())
print('success')
爬取英语学习资料
比如爬取英语学习链接:http://www.hjenglish.com/new/c1020/,将当前页文章爬取到并发送邮件到指定邮箱:
from bs4 import BeautifulSoup
import time, os
import xlwt
import requests
import datetime
import threading
import schedule
from mymodule.SendMail import *
def getLinks(url):
try:
res = requests.get(url, headers={'Host': 'www.hjenglish.com', 'Referer':'http://www.hjenglish.com/new/cet/', 'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'})
res.raise_for_status()
page = BeautifulSoup(res.text, 'lxml')
res.close()
links =['http://www.hjenglish.com' + adom['href'] for adom in page.select('.big-link.title-article')]
return links
except Exception as err:
print(err)
def spiderLink(url, lock):
print('当前线程', threading.currentThread().getName())
res = requests.get(url, headers={'Host': 'www.hjenglish.com', 'Referer':'http://www.hjenglish.com/new/cet/', 'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'})
if res.status_code == 200:
try:
page = BeautifulSoup(res.text, "lxml")
res.close()
titles = [title.getText() for title in page.select('.article-header .title')]
contents = [contentDom.getText() for contentDom in page.select('#J-article-content')]
# print(titles, contents)
num = len(titles)
print(titles, contents)
for i in range(0, num):
print(titles[i], contents[i])
sender.sendMessage(titles[i], contents[i])
except Exception as err:
print(err)
else:
pass
def my_job():
try:
starttime = datetime.datetime.now()
url = 'http://www.hjenglish.com/new/c1020/'
lock = threading.Lock()
spider_links = getLinks(url)
threads = [threading.Thread(target=spiderLink, args=(link, lock)) for link in spider_links]
for thread1 in threads:
thread1.start()
for thread2 in threads:
thread2.join()
endtime = datetime.datetime.now()
print('have spend ', str((endtime - starttime).seconds) + 's')
except Exception as err:
print(err)
os._exit(0)
if __name__ == '__main__':
try:
sender = SendMail()
my_job()
except Exception as err:
print(err)
os._exit(0)
python爬取英语学习资料并发送邮件的更多相关文章
- Python学习-使用Python爬取陈奕迅新歌《我们》网易云热门评论
<后来的我们>上映也有好几天了,一直没有去看,前几天还爆出退票的事件,电影的主题曲由陈奕迅所唱,特地找了主题曲<我们>的MV看了一遍,还是那个感觉.那天偶然间看到Python中 ...
- 萌新学习Python爬取B站弹幕+R语言分词demo说明
代码地址如下:http://www.demodashi.com/demo/11578.html 一.写在前面 之前在简书首页看到了Python爬虫的介绍,于是就想着爬取B站弹幕并绘制词云,因此有了这样 ...
- python入门学习之Python爬取最新笔趣阁小说
Python爬取新笔趣阁小说,并保存到TXT文件中 我写的这篇文章,是利用Python爬取小说编写的程序,这是我学习Python爬虫当中自己独立写的第一个程序,中途也遇到了一些困难,但是最后 ...
- 我用 Python 爬取微信好友,最后发现一个大秘密
前言 你身处的环境是什么样,你就会成为什么样的人.现在人们日常生活基本上离不开微信,但微信不单单是一个即时通讯软件,微信更像是虚拟的现实世界.你所处的朋友圈是怎么样,慢慢你的思想也会变的怎么样.最近在 ...
- 没有内涵段子可以刷了,利用Python爬取段友之家贴吧图片和小视频(含源码)
由于最新的视频整顿风波,内涵段子APP被迫关闭,广大段友无家可归,但是最近发现了一个"段友"的app,版本更新也挺快,正在号召广大段友回家,如下图,有兴趣的可以下载看看(ps:我不 ...
- 利用python爬取58同城简历数据
利用python爬取58同城简历数据 利用python爬取58同城简历数据 最近接到一个工作,需要获取58同城上面的简历信息(http://gz.58.com/qzyewu/).最开始想到是用pyth ...
- python爬取《龙岭迷窟》的数据,看看质量剧情还原度到底怎么样
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:简单 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行 ...
- 用Python爬取B站、腾讯视频、爱奇艺和芒果TV视频弹幕!
众所周知,弹幕,即在网络上观看视频时弹出的评论性字幕.不知道大家看视频的时候会不会点开弹幕,于我而言,弹幕是视频内容的良好补充,是一个组织良好的评论序列.通过分析弹幕,我们可以快速洞察广大观众对于视频 ...
- Python爬取跑男的评论,看看大家都在看谁吧
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于菜J学Python,作者: J哥 Python爬取爬取腾讯视频弹幕视频讲解 http ...
随机推荐
- 《Effective Java》——读后总结
这本书在Java开发的行业里,颇有名气.今天总算是粗略的看完了…后面线程部分和序列化部分由于心浮气躁看的不仔细.这个月还剩下一周,慢慢总结消化. 1.静态工厂方法代替构造器 静态工厂方法有名称,能确切 ...
- 转载 Adobe DreamweaverCS6安装及破解
一:安装 百度链接:链接:http://pan.baidu.com/s/1dF8hTex 密码:zrew (重点) 1) Adobe DreamweaverCS6中文版下载 2)Adobe Dre ...
- CentOS6 系统下升级python后yum命令使用时报错
CentOS6 系统下升级python后yum命令使用时报错,如下: [root@xxxxxxx]#yumFile"/usr/bin/yum",line30exceptKeyboa ...
- SDUT OJ 顺序表应用5:有序顺序表归并
顺序表应用5:有序顺序表归并 Time Limit: 100 ms Memory Limit: 880 KiB Submit Statistic Discuss Problem Description ...
- rabbitMq使用学习笔记
rabbitmq的工作原理: MQ全称为Message Queue,即消息队列, RabbitMQ是由erlang语言开发,基于AMQP(Advanced MessageQueue 高级消息队列协议) ...
- win7运行nodejs,返回IPV6:::ffff:127.0.0.1
问题: 在win7上使用telnet连接node生成的服务器,在获取ip的过程中出现的问题. win7默认开启IPV6,所以获取的IP地址带有::ffff:前缀. 如果程序中使用到了IP地址,有可能会 ...
- BZOJ - 2844 线性基
题意:求给定的数在原数组中的异或组合中的排名(非去重) 因为线性基中\(b[j]=1\)表示该位肯定存在,所以给定的数如果含有该位,由严格递增和集合枚举可得,排名必然加上\(2^j\)(不是完全对角就 ...
- setlocal enabledelayedexpansion 解释
看字面的意思是:设置本地为延迟扩展.其实也就是:延迟变量,全称"延迟环境变量扩展", 在cmd执行命令前会对脚本进行预处理,其中有一个过程是变量识别过程,在这个过程中,如果有两个% ...
- vue 实现表单中password输入的显示与隐藏.
实现效果: 点击 “眼睛” 的时候显示与隐藏 代码: <!DOCTYPE html> <html lang="en"> <head> <m ...
- 移动端bug和优化
1.字体兼容bug 描叙:ios默认字体和andriod不一样,需要设置html的默认字体样式例子:font-family: PingFang-SC-Regular,Helvetica,sans-se ...