python爬取河北省疫情通報

2022-08-30 13:36:10 字數 4441 閱讀 4757

河北省衛生健康委員會關於疫情的通報格式一般為如下格式:因此可以通過改變爬取位址去爬取所有疫情資料。

**如下:

from lxml import

etree

import

reimport

requests

definfo(url):

strhtml = requests.get(url) #

get方式獲取網頁資料

tree =etree.html(strhtml.text)

text=tree.xpath('

//p//text()')

text[0] = re.sub(r'

\u3000

', ''

, text[0])

date=re.findall(r"

(.+?日)

", text[0])

print("時間"

,date)

xin_que_num=re.findall(r"

新增確診病例(.+?例)

", text[0])

mid = text[0].split("

其中", 1)[1]

num=len(mid.split("

其中", 1))

if num>1:

mid=mid.split("

其中", 1)[0]

xin_shi_num=re.findall(r"

[,,、](.+?市)(.+?例)

", mid)

xin_chu_num = re.findall(r"

新增**出院病例(.+?例)

", text[0])

xin_yi_num = re.findall(r"

新增疑似病例(.+?例)

", text[0])

print("

新增確診病例

",xin_que_num)

print("

詳細新增確診病例

",xin_shi_num)

print("

新增**出院病例

",xin_chu_num)

print("

新增疑似病例

",xin_yi_num)

que_num=re.findall(r"

累計報告確診病例(.+?例)

", text[1])

si_num=re.findall(r"

例,其中死亡(.+?例)

", text[1])

zhong_num=re.findall(r"

,現有重症病例(.+?例)

", text[1])

yu_num=re.findall(r"

,累計**出院(.+?例)

", text[1])

print("

累計確診病例

",que_num)

print("

死亡病例

",si_num)

print("

重症病例

",zhong_num)

print("

出院病例

",yu_num)

que_xi_num=

si_xi_num=

zhong_xi_num=

chu_xi_num=

num=len(text[1].split("

確診病例中

",1))

if num>1:

mid = text[1].split("

確診病例中

", 1)[1]

num = len(mid.split("

死亡病例中

",1))

if num > 1:

que=mid.split("

死亡病例中

",1)[0]

que_xi_num = re.findall(r"

[,、](.+?市)(.+?例)

", que)

si=mid.split("

死亡病例中

",1)[1]

mid=si

num = len(mid.split("

重症病例中

", 1))

if num > 1:

si=mid.split("

重症病例中

",1)[0]

si_xi_num = re.findall(r"

[,、](.+?市)(.+?例)

", si)

zhong=mid.split("

重症病例中

",1)[1]

mid=zhong

num = len(mid.split("

出院病例中

", 1))

if num > 1:

zhong=mid.split("

出院病例中

",1)[0]

zhong_xi_num = re.findall(r"

[,、](.+?市)(.+?例)

", zhong)

chu=mid.split("

出院病例中

",1)[1]

chu_xi_num = re.findall(r"

[,、](.+?市)(.+?例)

", chu)

else

: zhong_xi_num = re.findall(r"

[,、](.+?市)(.+?例)

", zhong)

else

: si_xi_num = re.findall(r"

[,、](.+?市)(.+?例)

", si)

print("

詳細確診病例

",que_xi_num)

print("

詳細死亡病例

",si_xi_num)

print("

詳細重症病例

",zhong_xi_num)

print("

詳細出院病例

",chu_xi_num)

yisi_num=re.findall(r"

疑似病例(.+?例)

", text[1])

print("

疑似病例

",yisi_num)

miqie_num=re.findall(r"

密切接觸者(.+?人)

", text[2])

jie_num=re.findall(r"

解除隔離醫學觀察(.+?人)

", text[2])

guan_num=re.findall(r"

現有(.+?人)

", text[2])

print("

密切接觸者

",miqie_num)

print("

接觸醫學觀察

",jie_num)

print("

現有醫學觀察人數

",guan_num)

defget_url(url):

strhtml = requests.get(url) #

get方式獲取網頁資料

tree =etree.html(strhtml.text)

return

tree

if__name__ == '

__main__':

url = '

'list_url =get_url(url)

tltle_ = list_url.xpath('

//tr/td/a//text()')

url_ = list_url.xpath('

//tr/td/a/@href')

l =url_tltles = #

疫情標提列表

url_list = #

疫情詳情頁列表

for i in

tltle_:

if i == '

\r\n\t\t\t\t\t\t':

pass

else

:

for index,i in

enumerate(l):

if'河北省新型冠狀病毒

'not

ini :

pass

else

:

for index,i in

enumerate(url_list):

url = '

'+i

print

(url_tltles[index])

print

(url)

info(url)

Python爬取疫情資料

實現 輸出結果 import requests 請求庫 import pandas as pd 日期 today time.strftime y m d time.localtime format y 年 m 月 d 日 url 請求頭 headers 傳送請求 response requests....

搜狗 疫情資料爬取(Python)

上週已經分享過搜狗 疫情資料爬取 r語言 這次分享一下搜狗 疫情資料爬取 python from urllib import request from lxml import etree import re import pandas as pd import json url response r...

使用Python進行疫情資料爬取

為了使用python學習爬取疫情資料,提前學習了python中的語法和各種儲存結構 dirt 若沒有這些基礎很難看懂python 更別提寫了 放入要爬的url url 設定header做乙個防爬機制 獲取response的json response requests.get url,headers ...