追的小说更新时间不准确,有时追更要多次去看看更新没有,很烦。于是像用python监控,一旦更新就直接把内容发给我。
为了爬取方便,这里找个不需要登陆的小说网站《大王饶命》。
getnovel.py
from bs4 import BeautifulSoup
import requests
import os
import mail #这是我自己写的一个发邮件的py文件
def makeFileFromUrl(url,name):
root = "/home/pythoncode/dawangraoming/novel/"
path = root + name + ".txt"
if not os.path.exists(root):
os.mkdir(root)
if os.path.exists(path):
return
r = requests.get(url)
r.encoding = r.apparent_encoding
soup = BeautifulSoup(r.text,"html5lib")
content = soup.find("div",{"id":"content"})
f = open(path,'wb')
for i in content.contents:
if(i.string):
f.write(i.string.encode('utf-8'))
f.close()
f = open(path)
s=f.read()
mail.send(title=name,content=s)
novel = "http://www.biqugexsw.com/35_35872/"
url1="http://www.biqugexsw.com"
r = requests.get(novel)
r.encoding = r.apparent_encoding
soup = BeautifulSoup(r.text,"html5lib")
dd = soup.findAll("dd")
for i in range(3):
a = dd[2-i].find("a")
makeFileFromUrl(url1 + a['href'],a.string)
mail.py (这里需要自己的邮箱密码,不会的可以看我之前爬天气的文章)
import smtplib
from email.mime.text import MIMEText
from email.header import Header
def send(content = 'nothing',toUser = '814015815@qq.com',title = "from my server",fromer = "myServer"):
sender='814015815@qq.com' # 发件人邮箱账号
num = '' # 发件人邮箱密码(当时申请smtp给的口令)
msg = MIMEText(content,'plain','utf-8')
msg['From'] = Header(fromer,"utf-8")
msg['To'] = Header(toUser,'utf-8')
msg['Subject'] = title
try:
server = smtplib.SMTP_SSL('smtp.qq.com',465)
#server.set_debuglevel(1)
server.login(sender,num)
server.sendmail(sender,[toUser],msg.as_string())
server.quit()
return 1
except Exception:
return 0
然后用crontab 配置按时打开,因为我云服务器比较空闲,这里配置每十分钟执行一次。不会配置的也可以看我之前爬天气的文章。
笔记:linux新建的sh文件没有执行权限,要修改权限才能执行