摘要:所以有了下面这段程序有时会乱码解析返回的是一个列表黎海威三个参数第一个为文本内容,第二个设置文本格式,第三个设置编码景顺长城沪深增强基金经理有变动,已不是黎海威请查收。
最近因为支付宝送了我个红包,可以买基金,又看了一些基金的文章,想买点基金玩玩,在知乎上看到这样一篇文章:
其实如果是长期定投,用简单的方法筛选即可:
晨星近5年、近3年评级为五星;
天天的业绩排名近3年、2年、1年、6个月的业绩都为优秀;
基金经理人在近3年无更换。
然后我就想及时知道我买的基金的经理人有没有换,并发邮件来用通知我。所以有了下面这段程序
import requests from bs4 import BeautifulSoup url = "http://fund.eastmoney.com/000311.html?spm=search" request = requests.get(url) request.encoding = "utf-8" #有时会乱码 result = request.text html = BeautifulSoup(result,"lxml") #解析 titel = html.select_one("#body div.fundDetail-main > div.fundInfoItem > div.infoOfFund td:nth-of-type(3) a") #select返回的是一个列表 name = titel.get_text().strip() print(name) if name != "黎海威": import smtplib from email.mime.text import MIMEText from email.header import Header # 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码 msg = MIMEText("景顺长城沪深300增强(000311):基金经理有变动,已不是黎海威!请查收。", "plain", "utf-8") # 输入Email地址和口令: from_addr = "XXX@163.com" password = "XXX" # 输入SMTP服务器地址: smtp_server = "smtp.163.com" # 输入收件人地址: to_addr = "XXX@qq.com,XXX@qq.com" msg["From"] = from_addr msg["To"] = to_addr msg["Subject"] = "基金经理变更" server = smtplib.SMTP(smtp_server, 25) # SMTP协议默认端口是25 server.set_debuglevel(1) server.login(from_addr, password) server.sendmail(from_addr, to_addr.split(","), msg.as_string()) ##发给多个人 server.quit()第二版:爬取多个基金
#====================================第二版========================================= import requests from bs4 import BeautifulSoup #邮件 import smtplib from email.mime.text import MIMEText from email.header import Header names_pc=[] #爬虫下来的名字 fundnames = ["景顺长城沪深300增强(000311)","兴全沪深300指数(LOF)(163407)"] names_pass = ["黎海威", "申庆"] stock_code = ["000311","163407"] urls =[] for i in stock_code: url = "http://fund.eastmoney.com/"+str(i)+".html?spm=search" urls.append(url) for url in urls: request = requests.get(url) request.encoding = "utf-8" #有时会乱码 result = request.text html = BeautifulSoup(result,"lxml") #解析 titel = html.select_one("#body div.fundDetail-main > div.fundInfoItem > div.infoOfFund td:nth-of-type(3) a") #select返回的是一个列表,用select的话用[0]可以 name = titel.get_text().strip() print(name) names_pc.append(name) print(names_pc) from_addr = "XXXX@163.com" password = "XXXX" smtp_server = "smtp.163.com" # 输入SMTP服务器地址: to_addr = "XXX@qq.com,XXX@qq.com" # 输入收件人地址: for name_pc,name_pass,fundname in zip(names_pc,names_pass,fundnames): if name_pc != name_pass: text = "{}:基金经理有变动,已不是{}!请查收".format(fundname,name_pass) msg = MIMEText(text, "plain", "utf-8") msg["From"] = from_addr msg["To"] = to_addr msg["Subject"] = "基金经理变更" ##主题 server = smtplib.SMTP(smtp_server, 25) # SMTP协议默认端口是25 server.set_debuglevel(1) server.login(from_addr, password) server.sendmail(from_addr, to_addr.split(","), msg.as_string()) ##发给多个人 server.quit()定时任务
既然已经写好程序了,当然希望它每天能跑,然后我就去阿里云租了台服务器
输入crontab -e来执行定时任务,注意上面的程序在阿里云上需要将smtplib.SMTP函数改成smtplib.SMTP_SSL来执行才能跑通
0 10 * * * /usr/bin/python3 /home/admin/fund/fundchange2email_v1.py > /home/admin/fund/fund.log
再ctrl+x保存并退出
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/41414.html
摘要:结合项目代码看比较好一些说明爬的是手机端网页版的微博听说这个爬起来简单,我就爬了。最后的数据采用序列化后存储在本地想用数据库的自己改一下就好了,不会的可以去看看廖雪峰老师的教程。关于,可以看廖雪峰老师的讲解。 为什么说是给新手的呢? 因为项目很小,算上空行才200来行代码,甚至有些简陋。相比于动不动写成几个大模块的教程,新手们能更快理解我在干什么,节省学习时间。当然,该有的模拟登陆,数...
摘要:又不似程序员可以直接套用框架来快速建站,不重复发明轮子。至此开启了新的折腾之旅。以及百度收录的时候不执行脚本等原因。能对应高并发,还能被百度爬虫识别。主要内容如标题文章等用标签渲染,让百度爬虫一次收录成功。 showImg(https://segmentfault.com/img/remote/1460000018057514); 目前版本的博客地址: https://zzzmh.cn...
摘要:目前这个爬虫还是比较简单的类型的,直接抓取页面,然后在页面中提取数据,保存数据到数据库。总结写这个项目其实主要的难点在于程序稳定性的控制,容错机制的设置,以及错误的记录,目前这个项目基本能够实现直接运行一次性跑通整个流程。 前言 之前研究数据,零零散散的写过一些数据抓取的爬虫,不过写的比较随意。有很多地方现在看起来并不是很合理 这段时间比较闲,本来是想给之前的项目做重构的。后来 利用这...
阅读 2888·2021-11-17 09:33
阅读 3661·2021-11-16 11:42
阅读 3488·2021-10-26 09:50
阅读 1316·2021-09-22 15:49
阅读 3045·2021-08-10 09:44
阅读 3669·2019-08-29 18:36
阅读 3923·2019-08-29 16:43
阅读 2207·2019-08-29 14:10