~哎,感覺每天用自己這衰老的身體走動好累的,所以又萌發出了買一輛自行車的衝動,首先肯定是溜去睿思瞧瞧,然而發現挺多好車的~然而都出手了,so!!!自己動手爬最新資訊發到郵件的豈不是美滋滋!!!用py寫東西是真的舒服,各種包各種調,想起當年用世界上最好的語言發郵件的時候的苦呀~
#coding:utf-8
import requests
from bs4 import beautifulsoup
import time
import smtplib # 載入smtplib模組
from email.mime.text import mimetext #發郵件所用包
from email.utils import formataddr
my_sender = '傳送人位址'
# 發件人郵箱賬號,為了後面易於維護,所以寫成了變數
my_user = '收件人位址'
# 收件人郵箱賬號,為了後面易於維護,所以寫成了變數
defmail
(content):
ret = true
try:
msg = mimetext(content, 'plain', 'utf-8') #這裡是郵件內容
msg['from'] = formataddr(["xduer", my_sender]) # 括號裡的對應發件人郵箱暱稱、發件人郵箱賬號
msg['to'] = formataddr(["wrm", my_user]) # 括號裡的對應收件人郵箱暱稱、收件人郵箱賬號
msg['subject'] = "it is subject"
# 郵件的主題,也可以說是標題
server = smtplib.smtp("smtp.sina.cn", 25) # 發件人郵箱中的smtp伺服器,埠是25
server.login(my_sender, "發件人密碼") # 括號中對應的是發件人郵箱賬號、郵箱密碼
server.sendmail(my_sender, [my_user, ], msg.as_string()) # 括號中對應的是發件人郵箱賬號、收件人郵箱賬號、傳送郵件
server.quit() # 這句是關閉連線的意思
except exception: # 如果try中的語句沒有執行,則會執行下面的ret=false
ret = false
return ret
#ret = mail()
# if ret:
# print("ok") # 如果傳送成功則會返回ok,稍等20秒左右就可以收到郵件
# else:
# print("filed") # 如果傳送失敗則會返回filed
dire1 = ; #建立乙個字典,字典的作用就是判斷這個標題是否有傳送過
url = ''
#要爬的位址url,這裡以睿思為例
res = requests.get(url)
res.encoding = 'utf-8'
text = res.text
soup = beautifulsoup(text,'html.parser') #唔,beautifulsoup可以了解一波
times = 5
#這裡是設定爬蟲爬幾次就暫停
url = ''
mark = 0
#標記為未爬過
while(times):
times = times-1
header = soup.find_all('a',attrs=) #爬下這個**標籤為a,class為...的內容
for i in header: #內容以陣列的形式存在著,那麼迴圈判斷
content = i.text #拿出裡面的內容
for j in range(len(content)):
if(content[j]=='車'): #當內容存在車這個關鍵字的時候,判斷這個標題是否被爬過
if (dire1.get(content) == none): #只有沒爬過的才傳送
dire1[content] = 1
content_url = url+i['href']#找到標題的href然後點進去,拿到第乙個內容
res2 = requests.get(content_url)
res2.encoding = 'utf-8'
text2 = res2.text
soup2 = beautifulsoup(text2, 'html.parser')
result = soup2.find_all('td',attrs=)
if(mark==0): #只有爬過一次,然後新發的訊息才會有乙個郵件的傳送,如果不想要檢視第一次的結果,將其設定為1即可
#print(i.text+result[0].text) #如果想傳送郵件,那麼注釋這句並執行mail()即可
#這裡i.text是標題,result[0].text為點進標題作者的內容
ret = mail(i.text+result[0].text)
if ret:
print("ok") # 如果傳送成功則會返回ok,稍等20秒左右就可以收到郵件
else:
print("filed") # 如果傳送失敗則會返回filed
time.sleep(60 * 60) # 讓**休息60*60s,畢竟我電的**,還是不要爆破
mark=1
買單車別買重車
今天沒課,就陪黃波到桂城去幫小莫辦件事,這個時候,不知道她在那裡情況怎樣。在車上我偶然看到竟然有 捷安特 自行車專賣的,就告訴黃波,因為他喜歡的人都去新加坡了,最近比較鬱悶,哈哈,想學我。桂城的摩的可真 貴,兩公里地就要3元。心裡那個恨啊,爺怎麼沒把單車踩來呢?回來時就專門去了那裡,不過捷安特都在上...