day23semenium的基本操作
1获取网络数据
1,找接口(在network,tetch,刷新列表,展开preview右边的列表。
有接口只有用requesets对接口(headers,requests)发送请求(可能是get或者host)
2,直接用requests对网址发送请求,加user_agent,cookie
3,用selenium
4,放弃
2selenuim流程
1导包
from selenium.webdriver import Chrome
from bs4 import BeautifulSoup
import csv, time
2创建一个浏览器对象
b=Chrome
3开口网页
b.get(‘url’)
选取网页操作
select=b.find_element_by_css_selector(css)
点击按钮
select.click()
4解析网页
soup=BeautifulSoup(b.pagesource,‘lmxl’)
爬取实时疫情数据
all_li=soup.select('.index_1-1-328_2IAAkE>div:nth-child(2)>a')
other_li=soup.select('#foreignTable > table > tbody > tr > td > table tr')
# print(all_li)
all_data1=[]
all_data2=[]
for i in all_li:
#地区名
area=i.select_one('.index_1-1-328_tDJ_ee>span').text
print(area)
#新增本土
# new = i.select('.index_1-1-328_3bRacm>.index_1-1-328_11uz11')[1].text
new = i.select('.index_1-1-328_3bRacm>div')[1].text
# print(new)
#现有病例
# now=i.select('.index_1-1-328_3bRacm>.index_1-1-328_11uz11')[2].text
now=i.select('.index_1-1-328_3bRacm>div')[2].text
# print(now)
all_data2.append([area, new, now])
#外国
for i in other_li:
#国家
country=i.select_one('.VirusTable_1-1-328_AcDK7v').text
# foreignTable > table > tbody > tr > td > table > tbody > tr:nth-child(1) > td:nth-child(1) > a > div.
#新增
o_new=i.select('.VirusTable_1-1-328_2AH4U9>td')[1].text
#累计
o_count=i.select('.VirusTable_1-1-328_2AH4U9>td')[2].text
#治愈
o_cure=i.select('.VirusTable_1-1-328_2AH4U9>td')[3].text
#死亡
o_death=i.select('.VirusTable_1-1-328_2AH4U9>td')[4].text
all_data2.append([country,o_new,o_count,o_cure,o_death])
f=open('./file/yiqing.csv','w',encoding='utf-8',newline='')
writer=csv.writer(f)
writer.writerow(['城市','新增','现有','外国名字','该国新增','该国累计','该国治愈','该国死亡'])
list1=all_data1+all_data2
print(list1)
writer.writerows(list1)