사용자:Utoleetest/covid-kr

의존 확장기능[편집 | 원본 편집]

  • Seleniumr과 Chromedriver 기능

소스[편집 | 원본 편집]

import pywikibot
from selenium import webdriver
import re

driver= webdriver.Chrome()
driver.get('http://ncov.mohw.go.kr/')
tnt = driver.find_element_by_xpath('//*[@id="content"]/div/div/div[1]/div[1]/div/div[1]/div[2]/h2/span')
date = f"2021.{tnt.text[1:11]} 질병관리청"
tnx = driver.find_element_by_xpath('//*[@id="content"]/div/div/div[1]/div[1]/div/div[1]/div[2]/div[2]/div[2]').text
total = re.search(r'([0-9,]+)', tnx).group(1)
add = driver.find_element_by_xpath('//*[@id="content"]/div/div/div[1]/div[1]/div/div[1]/div[2]/div[1]/table/tbody/tr[1]/td[4]/span').text


active = driver.find_element_by_xpath('//*[@id="content"]/div/div/div[1]/div[1]/div/div[1]/div[2]/div[1]/table/tbody/tr[1]/td[3]/span').text

critical = driver.find_element_by_xpath('//*[@id="content"]/div/div/div[1]/div[1]/div/div[1]/div[2]/div[1]/table/tbody/tr[1]/td[2]/span').text

critical = driver.find_element_by_xpath('//*[@id="content"]/div/div/div[1]/div[1]/div/div[1]/div[2]/div[1]/table/tbody/tr[1]/td[3]/span').text


death_s = driver.find_element_by_xpath('//*[@id="content"]/div/div/div[1]/div[1]/div/div[1]/div[2]/div[2]/div[1]').text
death = re.search(r'([0-9,]+)', death_s).group(1)
death_add = driver.find_element_by_xpath('//*[@id="content"]/div/div/div[1]/div[1]/div/div[1]/div[2]/div[1]/table/tbody/tr[1]/td[1]/span').text


# 위키/목록 텍스트 추출
site = pywikibot.Site('ko', 'libre')
page = pywikibot.Page(site, "Template:COVID-19/확진자 개요")
txt = page.text

txt = re.sub(r'<!--date-->\(.*?\)', f'<!--date-->({date})', txt)
txt = re.sub(r'<!--total-->.*?명', f'<!--total-->{total}명', txt)
txt = re.sub(r'<!--add-->.*?명', f'<!--add-->+{add}명', txt)

txt = re.sub(r'<!--active_add-->.*?명', f'<!--active_add-->{active}명', txt )
txt = re.sub(r'<!--critical-->.*?명', f'<!--critical-->{critical}명', txt)

txt = re.sub(r'<!--death-->.*?명', f'<!--death-->{death}명', txt )
txt = re.sub(r'<!--death_calc-->\(.*?\)', f"<!--death_calc-->({{{{#expr:{death.replace(',','')}/{total.replace(',','')}*100 round 1}}}}%, 전일 대비 +{death_add}명)", txt)

page.text = txt
page.save('봇: COVID-19 확진자 정보 갱신')