抢号多累啊,还不如写个脚本来自动化!
2023-12-26 10:58:57
抢号多累啊,还不如写个脚本来自动化!
自动今年疫情后,杭州余杭区所有的儿童疫苗都需要网上预约后才能接种,余杭政府也提供了一个微信和支付宝小程序“健康余杭”进行取号预约。但是每次基本都是僧多粥少,如果遇到节假日放假后的几个工作日更是一号难求。每次给女儿预约疫苗接种都是一次战斗! 好在是线上系统和线下还未打通,每次去医院发现前面有几十号人的时候心里都默默的想,不如花点时间把抢号这个过程自动化一下!
说干就干,于是我开始着手研究“健康余杭”小程序的预约流程。发现预约流程很简单,首先需要登录小程序,然后选择要预约的疫苗,最后选择预约时间即可。
登录小程序可以通过微信或者支付宝扫码登录,我这里使用的是Python的Selenium库来模拟扫码登录。Selenium是一个用于Web自动化测试的库,它可以模拟浏览器的行为,比如点击链接、填写表单、获取页面元素等。
from selenium import webdriver
# 创建一个Chrome浏览器实例
driver = webdriver.Chrome()
# 访问“健康余杭”小程序登录页面
driver.get("https://health.yuhang.gov.cn/wechat/index.html")
# 等待二维码图片加载完成
time.sleep(5)
# 使用手机扫码登录
input("扫码登录后按回车继续")
登录成功后,需要选择要预约的疫苗。我这里使用的是Beautiful Soup库来解析HTML页面,并提取出疫苗信息。Beautiful Soup是一个用于解析HTML和XML文档的库,它可以帮助我们轻松地从HTML页面中提取出我们需要的数据。
from bs4 import BeautifulSoup
# 获取当前页面的HTML源码
html = driver.page_source
# 使用Beautiful Soup解析HTML源码
soup = BeautifulSoup(html, "html.parser")
# 提取出疫苗信息
vaccines = soup.find_all("div", class_="vaccine-item")
# 打印出疫苗信息
for vaccine in vaccines:
print(vaccine.find("h3").text)
选择好疫苗后,需要选择预约时间。我这里使用的是Selenium库来模拟点击预约时间。
# 获取预约时间的元素
time_elements = driver.find_elements_by_xpath("//div[@class='time-item']")
# 循环遍历预约时间元素
for time_element in time_elements:
# 如果预约时间可用,则点击该元素
if time_element.get_attribute("class") == "time-item available":
time_element.click()
break
点击预约时间后,会弹出确认预约的对话框。我这里使用的是Selenium库来模拟点击确认按钮。
# 获取确认预约的按钮元素
confirm_button = driver.find_element_by_xpath("//button[@class='btn btn-primary']")
# 点击确认按钮
confirm_button.click()
至此,预约流程就完成了。我们只需要在预约时间带着女儿去医院接种疫苗即可。
结语
通过使用Python的Selenium库、Beautiful Soup库和WebDriver,我们成功地实现了“健康余杭”小程序的自动化预约。这不仅节省了我们的时间,也让我们避免了抢号的烦恼。
希望本文对您有所帮助。如果您有任何问题,请随时留言。