Python 美化组检测更改触发器

Python 美化组检测更改触发器,python,python-3.x,beautifulsoup,Python,Python 3.x,Beautifulsoup,我有一个脚本,它使用bs4抓取一个网页并抓取一个名为“Last Updated 4/3/2020,8:28 p.m.”的字符串。然后我将这个字符串分配给一个变量,并在电子邮件中发送它。脚本计划每天运行一次。然而,网站上的日期和时间每隔一天就会改变。因此,与每次运行脚本时发送电子邮件不同,我想设置一个触发器,使其仅在日期不同时发送。如何配置脚本以检测该更改 HTML格式的字符串: COVID-19 News Updates Last Updated 4/3/2020, 12:08 p.m. 我

我有一个脚本,它使用bs4抓取一个网页并抓取一个名为“Last Updated 4/3/2020,8:28 p.m.”的字符串。然后我将这个字符串分配给一个变量,并在电子邮件中发送它。脚本计划每天运行一次。然而,网站上的日期和时间每隔一天就会改变。因此,与每次运行脚本时发送电子邮件不同,我想设置一个触发器,使其仅在日期不同时发送。如何配置脚本以检测该更改

HTML格式的字符串:

COVID-19 News Updates


Last Updated 4/3/2020, 12:08 p.m. 我找到的秘密答案是这个,但它指的是标签,而不是字符串。

您需要经常使用以下方法检查是否有更改:

“检查市政网站,了解C19大流行期间膳食援助的变化”
#导入请求(下载页面)
导入请求
#导入BeautifulSoup(解析我们下载的内容)
从bs4导入BeautifulSoup
进口稀土
导入时间
#URL列表
URL=['http://www.vofil.com/covid19_updates']
#将标题设置为浏览器
headers={'User-Agent':'Mozilla/5.0(Macintosh;Intel Mac OS X 10_10_1)AppleWebKit/537.36(KHTML,如Gecko)Chrome/39.0.2171.95 Safari/537.36'}
尽管如此:
#下载网页
response=requests.get(URL[0],headers=headers)
#解析下载的主页并抓取所有文本
soup=BeautifulSoup(response.text,“lxml”)
#查找字符串
last\u update\u fra=soup.findAll(string=re.compile(“last Updated”))
时间。睡眠(60)
#再次下载请求
soup=BeautifulSoup(requests.get(URL[0],headers=headers),“lxml”)
如果soup.findAll(string=re.compile(“Last Updated”)==Last\u update\u fra:
持续
其他:
#发送电子邮件的代码
*这会在检查更改之前等待一分钟,但可以根据需要进行调整。
[信用][1]:https://chrisalbon.com/python/web_scraping/monitor_a_website/

我想象Windows任务调度程序可以用来代替时间模块?您发布的代码在第二个soup变量上抛出了一个错误:
第275行,在uuu init_uuuuuflen(标记)中,我为响应太晚表示歉意,在第二个beautifulsou对象中,您应该有
requests.get(URL[0],headers=headers).text
作为第一个论证,我将其取消,如果您能想出一些办法,Windows任务计划程序是一种可能。感谢您的回复。将
.text
添加到第一个参数中就成功了。然而,在我的例子中,我认为任务调度器是更好的选择。所以,我所做的是将它从while循环中取出,并移除时间模块。它仍然可以正常工作。你的回答基本正确,但如果你不介意的话,我会等到那个网站进行更新(应该在第二天或第二天?),这样我就可以确定它是否有效。
'''Checks municipal websites for changes in meal assistance during C19 pandemic'''

# Import requests (to download the page)
import requests
# Import BeautifulSoup (to parse what we download)
from bs4 import BeautifulSoup
import re

#list of urls
urls = ['http://www.vofil.com/covid19_updates']

#set the headers as a browser
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}

#download the homepage
response = requests.get(urls[0], headers=headers)
#parse the downloaded homepage and grab all text
soup = BeautifulSoup(response.text, "lxml")
#Find string
last_update_fra = soup.findAll(string=re.compile("Last Updated"))
print(last_update_fra)

#Put something here (if else..?) to trigger an email.

#I left off email block...