女神微博监控实现+Python进阶路线图 !
这个小项目的实现逻辑:
1、网络爬虫模块:每过1分钟爬一次牙牙的微博,有内容更新则通过邮件发送提醒自己,该功能可以拓展,比如监控某些关键词用户;
2、自动发送邮件模块:实现邮件发送,这里发送邮箱和密码改为自己的即可;
3、爬虫代码和发送邮件的代码都放在云服务器上24小时运行可实现实时监控状态;
爬虫代码:
<pre style="margin: 0px; padding: 0px; border: 0px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-weight: 400; font-stretch: inherit; font-size: 18px; line-height: inherit; font-family: inherit; vertical-align: baseline; word-break: break-word; color: rgb(93, 93, 93); letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;">
import requests
from lxml import etree
import time
import random
headers = {
'User-Agent': 'Avant Browser/1.2.789rel1 (http://www.avantbrowser.com)',
'Cookie': '你的cookie'
}
#定义获取第一条微博的函数
def getContents(url):
#需要完善 异常处理 try...except...
response = requests.get(url, headers = headers)
selector = etree.HTML(response.content)
#查看html源码可以找到微博内容+ 发布时间的结构 用xpath解析
all_cont = selector.xpath("//span[@class='ctt']")
all_times = selector.xpath("//span[@class='ct']")
#解析出最新微博的发布时间
time1 = all_times[0].xpath('string(.)')
#解析出第一条微博内容 注意这里取第2或者第3个元素(具体视是否有个人介绍)
con3= all_cont[2].xpath('string(.)')
print(con3 + "发布时间:"+ time1[0:3])
if time1[:3] == '1分钟':
print('1分钟内更新了.....')
#更新了则发送邮件通知
context = '更新内容为:'+con3
#调用发送邮件的函数
send("收件邮箱地址", "女神微博更新啦~~", context)
else:
print('还未更新......')
#延时函数 大概1分钟抓取1次
def delay():
delay = 59 + random.random()
time.sleep(delay)
#女神微博地址 XXXX为她的微博id
url = 'https://weibo.cn/XXXXXXX/profile'
#让代码在服务器上一直跑着
while True:
getContents(url)
delay()
</pre>
发送邮件的函数模块代码:
<pre style="margin: 0px; padding: 0px; border: 0px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-weight: 400; font-stretch: inherit; font-size: 18px; line-height: inherit; font-family: inherit; vertical-align: baseline; word-break: break-word; color: rgb(93, 93, 93); letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;">
from email.mime.text import MIMEText
import smtplib
account = "forXXXX@gmail.com"
password = "你的邮箱密码"
def send(to, title, content):
smtp_port = 587
server = smtplib.SMTP('smtp.googlemail.com', smtp_port)
server.docmd("EHLO server")
server.starttls()
server.set_debuglevel(1)
server.login(account, password)
msg = MIMEText(content)
msg['Content-Type'] = 'text/plain; charset="utf-8"'
msg['Subject'] = title
msg['From'] = account
msg['To'] = to
server.sendmail(account, to, msg.as_string())
server.close()
</pre>
注意gmail邮箱添加安全信任
image每分钟更新检查一遍微博是否有更新,输出:
<pre style="margin: 0px; padding: 0px; border: 0px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-weight: 400; font-stretch: inherit; font-size: 18px; line-height: inherit; font-family: inherit; vertical-align: baseline; word-break: break-word; color: rgb(93, 93, 93); letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;">
我来北京了 发布时间:05月
还未更新......
#更新了微博
我又来测试了 发布时间:1分钟
1分钟内更新了.....
</pre>
image如果有更新,会收到邮件提醒:
总结:当然以上这个小工具还可以玩出很多模式,比如监控某某新闻网站的热点新闻,监控股票数据等等;上都是用Python实现的,总的来说好好学习Python还是能够玩出更多花样,下面附上Python全栈进阶路线图,学习路上迷茫的同学可以参考:
image图1. Python语言基础
image图2. Python语言高级
image图3. Python全栈工程师前端
image图4. Python全栈工程师后端
image图5. Python Linux运维自动化开发
image图6. Python KaliLinux信息安全开发与使用
image图7. Python数据分析阶段
image图8. Python人工智能阶段
image图9. Python树莓派物联网阶段
image图10. Python项目实战阶段
当然,以上其实也只是大体骨架,需要自己不断地去丰富血肉,通过具体的项目实战来把握其精髓,后续有时间再补充一些具体的能够用到职场学习资料吧;多加练习,定能风生水起~