摘要:所以有了下面這段程序有時會亂碼解析返回的是一個列表黎海威三個參數(shù)第一個為文本內容,第二個設置文本格式,第三個設置編碼景順長城滬深增強基金經(jīng)理有變動,已不是黎海威請查收。
最近因為支付寶送了我個紅包,可以買基金,又看了一些基金的文章,想買點基金玩玩,在知乎上看到這樣一篇文章:
其實如果是長期定投,用簡單的方法篩選即可:
晨星近5年、近3年評級為五星;
天天的業(yè)績排名近3年、2年、1年、6個月的業(yè)績都為優(yōu)秀;
基金經(jīng)理人在近3年無更換。
然后我就想及時知道我買的基金的經(jīng)理人有沒有換,并發(fā)郵件來用通知我。所以有了下面這段程序
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 # 三個參數(shù):第一個為文本內容,第二個 plain 設置文本格式,第三個 utf-8 設置編碼 msg = MIMEText("景順長城滬深300增強(000311):基金經(jīng)理有變動,已不是黎海威!請查收。", "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"] = "基金經(jīng)理變更" server = smtplib.SMTP(smtp_server, 25) # SMTP協(xié)議默認端口是25 server.set_debuglevel(1) server.login(from_addr, password) server.sendmail(from_addr, to_addr.split(","), msg.as_string()) ##發(fā)給多個人 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指數(shù)(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 = "{}:基金經(jīng)理有變動,已不是{}!請查收".format(fundname,name_pass) msg = MIMEText(text, "plain", "utf-8") msg["From"] = from_addr msg["To"] = to_addr msg["Subject"] = "基金經(jīng)理變更" ##主題 server = smtplib.SMTP(smtp_server, 25) # SMTP協(xié)議默認端口是25 server.set_debuglevel(1) server.login(from_addr, password) server.sendmail(from_addr, to_addr.split(","), msg.as_string()) ##發(fā)給多個人 server.quit()定時任務
既然已經(jīng)寫好程序了,當然希望它每天能跑,然后我就去阿里云租了臺服務器
輸入crontab -e來執(zhí)行定時任務,注意上面的程序在阿里云上需要將smtplib.SMTP函數(shù)改成smtplib.SMTP_SSL來執(zhí)行才能跑通
0 10 * * * /usr/bin/python3 /home/admin/fund/fundchange2email_v1.py > /home/admin/fund/fund.log
再ctrl+x保存并退出
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41414.html
摘要:結合項目代碼看比較好一些說明爬的是手機端網(wǎng)頁版的微博聽說這個爬起來簡單,我就爬了。最后的數(shù)據(jù)采用序列化后存儲在本地想用數(shù)據(jù)庫的自己改一下就好了,不會的可以去看看廖雪峰老師的教程。關于,可以看廖雪峰老師的講解。 為什么說是給新手的呢? 因為項目很小,算上空行才200來行代碼,甚至有些簡陋。相比于動不動寫成幾個大模塊的教程,新手們能更快理解我在干什么,節(jié)省學習時間。當然,該有的模擬登陸,數(shù)...
摘要:又不似程序員可以直接套用框架來快速建站,不重復發(fā)明輪子。至此開啟了新的折騰之旅。以及百度收錄的時候不執(zhí)行腳本等原因。能對應高并發(fā),還能被百度爬蟲識別。主要內容如標題文章等用標簽渲染,讓百度爬蟲一次收錄成功。 showImg(https://segmentfault.com/img/remote/1460000018057514); 目前版本的博客地址: https://zzzmh.cn...
摘要:目前這個爬蟲還是比較簡單的類型的,直接抓取頁面,然后在頁面中提取數(shù)據(jù),保存數(shù)據(jù)到數(shù)據(jù)庫。總結寫這個項目其實主要的難點在于程序穩(wěn)定性的控制,容錯機制的設置,以及錯誤的記錄,目前這個項目基本能夠實現(xiàn)直接運行一次性跑通整個流程。 前言 之前研究數(shù)據(jù),零零散散的寫過一些數(shù)據(jù)抓取的爬蟲,不過寫的比較隨意。有很多地方現(xiàn)在看起來并不是很合理 這段時間比較閑,本來是想給之前的項目做重構的。后來 利用這...
閱讀 2887·2021-11-17 09:33
閱讀 3660·2021-11-16 11:42
閱讀 3487·2021-10-26 09:50
閱讀 1315·2021-09-22 15:49
閱讀 3045·2021-08-10 09:44
閱讀 3668·2019-08-29 18:36
閱讀 3923·2019-08-29 16:43
閱讀 2207·2019-08-29 14:10