import requests import csv from lxml import etree from config import FILE_NAME, QUERY_URL, HEADERS def fetch_raw_data(): response = requests.get(QUERY_URL, headers=HEADERS) return response.text def parse_data(data): etree.HTMLParser(encoding = "utf-8") doc = etree.HTML(data) # 国家 country = doc.xpath('//div[@class="table_container"]//tbody/tr/td/span/text()') # 确诊人数 person = doc.xpath('//div[@class="table_container"]//tbody/tr/td[2]/text()') person = [x.replace(",", "") for x in person] # 死亡人数 death = doc.xpath('//div[@class="table_container"]//tbody/tr/td[3]/text()') death = [x.replace(",", "") for x in death] message = list(zip(country, person, death)) return message def save_message(message, file_name): with open(file_name, "w", encoding = "utf-8") as file: w = csv.writer(file) w.writerows(message) def fetch_and_save(): raw_data = fetch_raw_data() message = parse_data(raw_data) save_message(message, FILE_NAME)