#第一步,导入selenium模块的webdrivier包
# By是selenium中内置的一个class,在这个class中有各种方法来定位元素
# 导入Keys模块以后,可以来模拟键盘操作
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import pandas as pd
from pyecharts.charts import Map #pyecharts绘制map地图 Map地图主要用于地理区域数据的可视化
from pyecharts import options as opts
driver = webdriver.Chrome(r"C:\Program Files\Google\Chrome\Application\chromedriver.exe")
driver.get("https://www.baidu.com/")
driver.find_element_by_id("kw").send_keys("疫情",Keys.ENTER)
driver.implicitly_wait(3)
driver.find_element_by_xpath("//*[@id='1']/div/div[2]/a/div[1]/div[1]").click() #国内疫情xpath地址
driver.switch_to_window(driver.window_handles[-1]) #切换到最新打开窗口
driver.find_element_by_xpath("//*[@id='nationTable']/div/span").click() #展开全部
yqdata_raw=driver.find_element_by_id("nationTable") #整个数据表格的id
yqdata_raw_list=yqdata_raw.find_elements_by_tag_name("tr")
data_list=[]
for i,yqdata in enumerate(yqdata_raw_list):
data_dict={}
if i==0:
continue
data_dict["area"]=yqdata.find_elements(By.TAG_NAME,"span")[1].text
data_dict["new_add"]=yqdata.find_elements_by_tag_name("td")[1].text
data_dict["new_data"]=yqdata.find_elements_by_tag_name("td")[2].text
data_dict["total"]=yqdata.find_elements_by_tag_name("td")[3].text
data_dict["cure"]=yqdata.find_elements_by_tag_name("td")[4].text
data_dict["death"]=yqdata.find_elements_by_tag_name("td")[-1].text
data_list.append(data_dict)
df = pd.DataFrame(data_list)
#转换成列表
area_list=list(df.area)
data_list=list(df.new_data)
data=[list(i) for i in zip(area_list,data_list)] #组合
yq_map=(Map()
.add("国内疫情现存情况",data,maptype="china") #将数据添加进去,生成中国地图,所以maptype要对应china
.set_global_opts(
visualmap_opts=opts.VisualMapOpts(is_piecewise=True,pieces=[ #设置是否为分段显示,然后通过 pieces来设置自定义数据范围和对应的颜色
{"min": 10000, "label": '10000人以及上', "color": "#6F171F"},
{"min": 1000, "max":9999,"label": '1000-9999人', "color": "#990000"},
{"min": 500, "max": 999, "label": '500-999人', "color": "#C92C34"},
{"min": 100, "max": 499, "label": '100-499人', "color": "#E35B52"},
{"min": 10, "max": 99, "label": '10-99人', "color": "#F39E86"},
{"min": 1, "max": 9, "label": '1-9人', "color": "#FDEBD0"},
{"max": 0,"label": '0人', "color": "#e5f2ff"}]))
)
yq_map.render_notebook() #显示地图
实现效果: