python定时下载链接_python程序定时检测并更新下载网页

windows中有计划任务管理器,可以定期执行某些操作。程序设想是每天由系统时间触发,每天定时自动执行网页检查,如果有新的链接,就执行自动备份任务。

前面计划任务管理的设定不赘述。前面有编辑环境变量,设置bat文件做脚本的介绍。

这里主要是将如何检测有新的网页。本例中使用了shelve模块来保存变量。也就是说每次下载完会进行一次登记。下次看看有没有登记,有登记的就不备份,没登记的就是新的需要下载的内容了。shelve还保存了一个最后下载时间的变量。

从实验结果看,博主设置是9:30分20秒执行任务。shelve变量正好是这个时间,所以定期执行是成功的。

"""定期下载备份网站文件"""

import shelve

import requests, bs4, re

import datetime

def setFileName(linkHref):

path = "e:\\analectsHtmlBak\\"

return path + 'bak' + linkHref[-3:] + ".html"

def storeUrl(mainurl, url, fileName):

res = requests.get(mainurl + url)

res.raise_for_status()

try:

htmlFile = open(fileName,'wb')

for chunk in res.iter_content(100000):

htmlFile.write(chunk)

htmlFile.close()

except:

print(url + "可能文件不存在或无法访问,挂彩")

else:

print(url + '已经成功下载')

res.close()

def bakHtmlUrl(url):

shelveFile = shelve.open("e:\\/analectsHtmlBak\\/menuData")

if 'htmlNo' in shelveFile.keys():

htmlNo = shelveFile['htmlNo']

else:

htmlNo = []

countI = 0

model = re.compile('^/\d{3}')

res = requests.get(url)

res.raise_for_status()

soup = bs4.BeautifulSoup(res.text,"html.parser")

Area = soup.find_all(href = model)

for link in Area:

if link['href'] not in htmlNo:

print('有新的网站链接:' + link['href'])

htmlNo.append(link['href'])

storeUrl("http://everyang.org", link['href'], setFileName(link['href']))

countI += 1

else:

print(link['href'] + "网站链接已有备份")

shelveFile['htmlNo'] = htmlNo

shelveFile['lastBakTime'] = datetime.datetime.now()

shelveFile.close()

res.close()

print("备份网站完毕!共下载%s个链接"%(countI))

bakHtmlUrl("http://everyang.org/analects_3/")

shelve备份时间查验是否定期执行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值