日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python监控网页_【小白教程】Python3监控网页

發(fā)布時間:2024/8/1 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python监控网页_【小白教程】Python3监控网页 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

之前用RSS來監(jiān)控網(wǎng)頁更新內(nèi)容,可惜刷新時間太長了,三個小時。。只能看看新聞啥的,又沒有小錢錢充會員(攤手

聽說Python可以做這個功能,抱著試試看的態(tài)度,本以為會很麻煩,沒想到這么簡單哈哈~我從來沒有用過Python都做出來了,相信你也沒問題!

(我真是純小白,路過的大佬請指教(⊙o⊙)ノ)

所用模塊

#監(jiān)控模塊

from urllib import request

from bs4 import BeautifulSoup

#正則表達

import re

import time

#發(fā)送郵件模塊

#郵箱服務(wù)器

import smtplib

#構(gòu)建郵件正文內(nèi)容

from email.mime.text import MIMEText

# email 用于構(gòu)建郵件內(nèi)容

from email.header import Header

1.原理

把網(wǎng)頁獲取到本地轉(zhuǎn)碼,然后篩選你需要的信息,重復這一過程。(看!是不是很簡單吶

2.獲取網(wǎng)頁信息

用到了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'}

#發(fā)送訪問請求 此處header作用為模擬瀏覽器訪問 部分網(wǎng)頁反爬蟲會檢測訪問源信息

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

_req=request.urlopen(_tmpRes)

#網(wǎng)頁utf-8解碼

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

return html

這里走了不少彎路,首先是一開始我是這么填的

request.Request(url)

也就是沒加headers,導致總會報錯,不過我用百度試了一下卻沒問題。。。找了半天也不知道問題出在哪,后來才知道有的網(wǎng)頁會檢測你的訪問源信息,只有訪問請求沒有設(shè)備信息有可能被拒絕...加上headers信息偽裝成瀏覽器訪問就好了。

害,我不會告訴你我最初Request就找了半天。。。Python是嚴格區(qū)分大小寫的!!

3.分析網(wǎng)頁信息 開始匹配

這部分功能用到BeautifulSoup

#分析網(wǎng)頁信息并匹配關(guān)鍵字

def analyAndCompile(html,firstKey,secondKey):

#提取Html數(shù)據(jù)

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

#二級匹配關(guān)鍵字

pattern=re.compile(secondKey)

#循環(huán)次數(shù)

flag=0

#當前已匹配的信息 使其不必重復提醒

currCom = ''

#while 循環(huán) 10s一次 重復匹配信息

while (1):

flag += 1

try:

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

#信息中包含'a'Tag和title內(nèi)容與一級匹配關(guān)鍵字相同的提取

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

#獲取title內(nèi)容

link_title=link.get('title')

#獲取網(wǎng)址

info_link = link.get('href')

#compilText判斷是否與二級關(guān)鍵字匹配 關(guān)鍵字匹配且之前沒出現(xiàn)過即為所需信息

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

currCom=link_title

print(' ·出現(xiàn)新數(shù)據(jù):'+link_title+'\n 地址:'+info_link)

#發(fā)送郵件

SendMail.sendMail('出現(xiàn)新數(shù)據(jù):'+link_title+'\n地址:'+info_link)

else:

print(' ·無新數(shù)據(jù)'+link_title)

time.sleep(10)

#異常獲取

except Exception as e:

import traceback

print(traceback.format_exc())

print('異常')

time.sleep(10)

這部分需要細心,先在網(wǎng)頁上找好所需信息的Tag,再用find_all方法篩選出來find_all方法可填多種參數(shù),具體參考這里:http://www.jsphp.net/python/show-24-214-1.html

需要花時間慢慢找,這部分沒什么好方法,耐心找吧~

4其他模塊代碼

上文中的匹配方法

#匹配關(guān)鍵字 若匹配到返回True 否則返回False

def compilText(pattern,compilStr):

return pattern.search(compilStr) is not None

發(fā)送郵件模塊,這部分網(wǎng)上有很多,我的僅供參考吧

# 發(fā)信方的信息:發(fā)信郵箱,QQ 郵箱授權(quán)碼

from_addr = 'xx@qq.com'

password = '此處填入郵箱授權(quán)碼'

# 收信方郵箱

to_addr = 'xx@163.com'

# 發(fā)信服務(wù)器

smtp_server = 'smtp.qq.com'

def sendMail(sendMsg):

# 郵箱正文內(nèi)容,第一個參數(shù)為內(nèi)容,第二個參數(shù)為格式(plain 為純文本),第三個參數(shù)為編碼

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

# 郵件頭信息

msg['From'] = Header(from_addr)

msg['To'] = Header(to_addr)

msg['Subject'] = Header('郵件標題')

# 開啟發(fā)信服務(wù),這里使用的是加密傳輸

#server = smtplib.SMTP_SSL()

server=smtplib.SMTP_SSL(smtp_server)

server.connect(smtp_server, 465)

# 登錄發(fā)信郵箱

server.login(from_addr, password)

# 發(fā)送郵件

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

# 關(guān)閉服務(wù)器

server.quit()

大功告成

自己調(diào)用填上網(wǎng)址和篩選關(guān)鍵字就行啦

(同樣的功能別的語言能這么幾行就實現(xiàn)的嗎~ 哼哼~Python真香555

總結(jié)

以上是生活随笔為你收集整理的python监控网页_【小白教程】Python3监控网页的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。