日常想買單車,所以自己搞py爬了一波睿思

2021-08-18 12:48:54 字數 2719 閱讀 1132

~哎,感覺每天用自己這衰老的身體走動好累的,所以又萌發出了買一輛自行車的衝動,首先肯定是溜去睿思瞧瞧,然而發現挺多好車的~然而都出手了,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元。心裡那個恨啊,爺怎麼沒把單車踩來呢?回來時就專門去了那裡,不過捷安特都在上...