之前用RSS来监控网页更新内容,可惜刷新时间太长了,三个小时。。只能看看新闻啥的,又没有小钱钱充会员(摊手

听说Python可以做这个功能,抱着试试看的态度,本以为会很麻烦,没想到这么简单哈哈~我从来没有用过Python都做出来了,相信你也没问题!

(我真是纯小白,路过的大佬请指教(⊙o⊙)ノ)

所用模块

#监控模块

from urllib import request

from bs4 import BeautifulSoup

#正则表达

import re

import time

#发送邮件模块

#邮箱服务器

import smtplib

#构建邮件正文内容

from email.mime.text import MIMEText

# email 用于构建邮件内容

from email.header import Header

1.原理

把网页获取到本地转码,然后筛选你需要的信息,重复这一过程。(看!是不是很简单呐

2.获取网页信息

用到了python的urllib模块,先上代码

#解析url地址 返回utf-8解码信息

def analyUrl(url):

header={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}

#发送访问请求 此处header作用为模拟浏览器访问 部分网页反爬虫会检测访问源信息

_tmpRes=request.Request(url=url,headers=header)

_req=request.urlopen(_tmpRes)

#网页utf-8解码

html=_req.read().decode('utf-8')

return html

这里走了不少弯路,首先是一开始我是这么填的

request.Request(url)

也就是没加headers,导致总会报错,不过我用百度试了一下却没问题。。。找了半天也不知道问题出在哪,后来才知道有的网页会检测你的访问源信息,只有访问请求没有设备信息有可能被拒绝...加上headers信息伪装成浏览器访问就好了。

害,我不会告诉你我最初Request就找了半天。。。Python是严格区分大小写的!!

3.分析网页信息 开始匹配

这部分功能用到BeautifulSoup

#分析网页信息并匹配关键字

def analyAndCompile(html,firstKey,secondKey):

#提取Html数据

html=BeautifulSoup(html,'html.parser')

#二级匹配关键字

pattern=re.compile(secondKey)

#循环次数

flag=0

#当前已匹配的信息 使其不必重复提醒

currCom = ''

#while 循环 10s一次 重复匹配信息

while (1):

flag += 1

try:

print('第' + str(flag) + '次 ' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

#信息中包含'a'Tag和title内容与一级匹配关键字相同的提取

for link in html.find_all('a',title=re.compile(firstKey)):

#获取title内容

link_title=link.get('title')

#获取网址

info_link = link.get('href')

#compilText判断是否与二级关键字匹配 关键字匹配且之前没出现过即为所需信息

if compilText(pattern,link_title) and currCom is not link_title:

currCom=link_title

print(' ·出现新数据:'+link_title+'\n 地址:'+info_link)

#发送邮件

SendMail.sendMail('出现新数据:'+link_title+'\n地址:'+info_link)

else:

print(' ·无新数据'+link_title)

time.sleep(10)

#异常获取

except Exception as e:

import traceback

print(traceback.format_exc())

print('异常')

time.sleep(10)

这部分需要细心,先在网页上找好所需信息的Tag,再用find_all方法筛选出来find_all方法可填多种参数,具体参考这里:http://www.jsphp.net/python/show-24-214-1.html

需要花时间慢慢找,这部分没什么好方法,耐心找吧~

4其他模块代码

上文中的匹配方法

#匹配关键字 若匹配到返回True 否则返回False

def compilText(pattern,compilStr):

return pattern.search(compilStr) is not None

发送邮件模块,这部分网上有很多,我的仅供参考吧

# 发信方的信息:发信邮箱,QQ 邮箱授权码

from_addr = 'xx@qq.com'

password = '此处填入邮箱授权码'

# 收信方邮箱

to_addr = 'xx@163.com'

# 发信服务器

smtp_server = 'smtp.qq.com'

def sendMail(sendMsg):

# 邮箱正文内容,第一个参数为内容,第二个参数为格式(plain 为纯文本),第三个参数为编码

msg = MIMEText(sendMsg, 'plain', 'utf-8')

# 邮件头信息

msg['From'] = Header(from_addr)

msg['To'] = Header(to_addr)

msg['Subject'] = Header('邮件标题')

# 开启发信服务,这里使用的是加密传输

#server = smtplib.SMTP_SSL()

server=smtplib.SMTP_SSL(smtp_server)

server.connect(smtp_server, 465)

# 登录发信邮箱

server.login(from_addr, password)

# 发送邮件

server.sendmail(from_addr, to_addr, msg.as_string())

# 关闭服务器

server.quit()

大功告成

自己调用填上网址和筛选关键字就行啦

(同样的功能别的语言能这么几行就实现的吗~ 哼哼~Python真香555

python监控网页_【小白教程】Python3监控网页相关推荐

  1. python 爬虫框架_小白学 Python 爬虫(28):自动化测试框架 Selenium (下)

    人生苦短,我用 Python 如果我的文章对您有帮助,请关注支持下作者的公众号:极客挖掘机,您的关注,是对小编坚持原创的最大鼓励:) 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Py ...

  2. word打开老是配置进度_小白教程 | office出现配置进度框,怎么办?

    最近很多同学在备考二级时候,自己的电脑上office软件Word或者Excel出问题了,每次打开都会出现配置进度框. 这种情况怎么办呢? 这种情况都是注册表的问题,马上安排解决 之前在  右键菜单没有 ...

  3. html中一个页面大概多少px,当屏幕 (浏览器窗口) 小于 768px, 每一列的宽度是 100% -HTML教程_小白教程_css5.net...

    小白教程(css5.net) * { box-sizing: border-box; } .row:after { content: ""; clear: both; displa ...

  4. 360浏览器打不开网页_浏览器打不开网页是什么原因 打不开网页原因解决方法...

    浏览器打不开网页是什么原因?对于网页打不开的原因都多种,并没有直接原因可以查明,不过我们可以利用排查的方法来解决这个故障 1.宽带未连接.重新连接宽带. 2.路由器故障.拆除路由器后,进行宽带连接试用 ...

  5. dw网页设计期末设计一个网页_制作网站与设计网页可以用什么软件?

    网站制作确实是项技术活,要不然怎么一个前端设计师工资都可以到6-7K呢,早在读书时代稍有爱好网页设计时就听说过网页三剑客. 网页三剑客 网页三剑客,是一套强大的网页编辑工具,最初是由Macromedi ...

  6. rocketmq python消息堆积_编写shell脚本监控rocketMQ消息堆积并推送钉钉

    1.利用mqadmin命令,编写shell监控脚本(宿主机上需要安装RocketMQ客户端) !/bin/bash GroupInfo=sh /app/alibaba-rocketmq/bin/mqa ...

  7. python微信跳一跳_[小白教程] 用Python占领微信跳一跳排行榜

    文/帅朋 微信新版 6.6.1 加入了「跳一跳」这个游戏功能,并迅速在朋友圈之间火了起来.很多人为了能够跳到更高的分数而努力的奋斗着.那么今天我就来蹭一蹭「跳一跳」的热度,给大家提供一个方法让你快速的 ...

  8. python爬虫ip代理池_爬虫教程-Python3网络爬虫开发——IP代理池的维护

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 准备工作 要实现IP代理池我们首先需要成功安装好了 Redis 数据库并启动服务,另外还需要安装 Aiohttp.Requests.RedisPy.PyQ ...

  9. python判断素数_小白学Python | 你还在说你入不了门吗

    收藏的好多啊 原创不易,动动小手,点个赞啦!! 十二月份,天气有时候会很阴沉,一天都见不到太阳.气温也慢慢变冷了,晚上回家还是会感觉到衣服穿少了. 阴阴沉沉总会过去的,我还是期待阳春三月. 2019年 ...

  10. python精通大学_小白21天精通Python是如何做到的?

    题记:大二的时候发现人生苦短,所以信了拍神,开始学Python.学了大半年之后成功转行做前端了.来写个教程帮助大家入门Python. Python零基础入门 零基础入门就得从最基本的变量,语法格式,数 ...

最新文章

  1. 机器学习(5)降维 -- 特征选择(低方差过滤与相关系数)与主成分分析(PCA降维)
  2. 哈工大推智能荐股,能让你稳赚不赔吗?
  3. Redis源码分析:服务器端处理过程
  4. 《实例化需求》读书笔记
  5. js前端实现模糊查询
  6. Java--对象内存布局
  7. Element type quot;Resourcequot; must be followed by either attribute specifications, quot;gt;qu...
  8. python学习笔记(十二)python操作redis
  9. set和map去重调用什么方法_Es6中Map对象和Set对象的介绍及应用
  10. kindeditor java上传_富文本编辑器kindeditor上传图片的配置方法
  11. windows笔记-【内核对象线程同步】概述
  12. 项目Alpha冲刺Day3
  13. 通俗易懂解释信源编码与信道编码的区别与联系
  14. 2019最新Python学习路线(Python学习教程_Python学习视频):Python2和Python3你们都是怎么选的?
  15. jQuery 前端操作
  16. Nuxt SSR 部署实践
  17. Word小技巧:图片批量裁剪与大小调整
  18. 如何完成一个有效的面试——善用STAR法则
  19. Replacing Elements
  20. 钰泰ETA8113,ETA8120,ETA8121降压转换器,2A/3A电流,OVP保护

热门文章

  1. 【其他】Windows Media Services 无法启动
  2. 10个宝藏级编程资源
  3. 乐有家:房源信息立体把控,打造全渠道真房源
  4. AVPlayerViewController支持横屏设置
  5. CSDN:如何获得C币
  6. 高德地图web服务api反坐标查询/逆地理编码
  7. 全新自助任务平台WQ源码对接微信带分类信息线报完美运营驴赚网全量开源发布
  8. comsol 超声声场模拟_[转载]Comsol Multiphysics 声场仿真模块整体介绍
  9. 国内ERP技术公司综合
  10. Python编写杨辉三角形