大数据 爬虫Python AI SqlPython小哥哥

女神微博监控实现+Python进阶路线图 !

2019-04-18  本文已影响0人  14e61d025165

这个小项目的实现逻辑:

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项目实战阶段

当然,以上其实也只是大体骨架,需要自己不断地去丰富血肉,通过具体的项目实战来把握其精髓,后续有时间再补充一些具体的能够用到职场学习资料吧;多加练习,定能风生水起~

上一篇下一篇

猜你喜欢

热点阅读