首页 > 其他分享 >【爬虫】项目篇-爬取丁香园的疫情数据

【爬虫】项目篇-爬取丁香园的疫情数据

时间:2024-04-05 22:55:45浏览次数:15  
标签:re req 爬虫 爬取 source window item 丁香 csv

```

#编写程序,从丁香园获取国内近期疫情数据,按省份提取当前确诊数,
# 确诊总数,疑似病例数,治愈数,死亡数,高危数等数据,保存到csv文件或excel文件中。

import requests
import xlsxwriter
from fake_useragent import UserAgent
import cchardet
import re
import json
from bs4 import BeautifulSoup
import csv

headers={
'user-agent':UserAgent().random
}

url="https://ncov.dxy.cn/ncovh5/view/pneumonia"
req=requests.get(url,headers=headers)
req.encoding=cchardet.detect(req.content)


#获取文本内容 有re、BeautifulSoup两种方式

#source=re.search('id="getAreaStat">try { window.getAreaStat = (.*?)}catch.*?{}</script>',req.text,re.S).group(1)
#bs=BeautifulSoup(req.text,'lxml')
#source=bs.select('body>script')[0].string.replace('try { window.getAreaStat = ',"").replace(']}catch(e){}',"")

source=re.search(r'window.getAreaStat = (.*?)}]}catch',req.text,re.S).group()
source=source.replace('window.getAreaStat = ',"").replace("}catch","")
# print(source)
source2=re.search(r'window.fetchRecentStatV2 = (.*?)}catch',req.text,re.S).group(1)

#将str数据转换成json数据
js=json.loads(source)
data=json.loads(source2)

#保存到本地
# with open('nCov-19_info.json','w',encoding="UTF-8") as f:
# f.write(json.dumps(js,ensure_ascii=False))
# f.close()

#设置列名
colname='省份','昨日本土新增','现存确诊','累积确诊','疑似病例数','死亡数','治愈数','高危地区数','中危地区数'

#创建csv文件
with open('COVID-19_info.csv','w',newline="",encoding='utf-8-sig')as file:
a=csv.writer(file)
a.writerow(list(colname))

#创建xlsx文件
workbook = xlsxwriter.Workbook('COVID-19_info.xlsx')
worksheet = workbook.add_worksheet()
col = (colname)
str_format=workbook.add_format({'align':'center'})
#将列名添加到表格中
for i in range(0, len(col)):
worksheet.write(0, i, col[i],str_format)

#设置表格行索引 初值为0
x=0
p=[ i['provinceName'] for i in data]
print(p)
for item in js:
x = x + 1
#省份名
pro_name=item['provinceName']
if pro_name in p:
for item2 in data:
if item2['provinceName']==pro_name:
yesterday=item2['yesterdayLocalConfirmedCount']
if pro_name not in p:
#现存确诊
yesterday=""
currentConfirmed=item['currentConfirmedCount']
#累计确诊
allConfirmed=item['confirmedCount']
#疑似病例数
suspected=item['suspectedCount']
#死亡数
dead=item['deadCount']
#治愈数
cured=item['curedCount']
#高风险地区数
highDanger=item['highDangerCount']
#中风险地区数
midDanger=item['midDangerCount']
#风险地区数
#allDanger=int(highDanger)+int(midDanger)

datalist=[pro_name,yesterday,currentConfirmed,allConfirmed,suspected,dead,cured,highDanger,midDanger]
print(datalist)
#保存到csv文件
with open('COVID-19_info.csv','a',newline="",encoding='utf-8-sig') as file:
a=csv.writer(file)
a.writerow(datalist)
#保存到xlsx文件
for i in range(0,len(col)):
worksheet.write(x,i,datalist[i],str_format)
workbook.close()
print("保存成功")

```

标签:re,req,爬虫,爬取,source,window,item,丁香,csv
From: https://www.cnblogs.com/Gimm/p/18116345

相关文章

  • 【爬虫】项目篇-爬取福州公交线路并保存至MongoDB
    #http://www.fz-bus.cn/index.asp#1)在MongoDB中创建一个数据库和一个集合。#2)在程序执行过程中可输入线路名称查询公交线路,#每查询到一条线路的信息后,查询MongoDB数据库中是否存在该线路。若存在,则不做任何操作,否则执行第3步。#将线路名称、起点和终点、途径站点、#冬季首......
  • 【爬虫】debug篇-关于fake_useragent无法使用:Error occurred during loading data. Tr
    Erroroccurredduringloadingdata.Tryingtousecacheserverhttps://fake-useragent.herokuapp.com/browsers/0.1.11Traceback(mostrecentcalllast):File"D:\python\lib\site-packages\fake_useragent\utils.py",line154,inloadfori......
  • 【爬虫】项目篇-爬取豆瓣电影周榜
    目录使用re爬取+为请求头,保存为csv使用re爬取2+不保存使用xpath+lxml.html+lxml.etree使用re爬取+为请求头,保存为csvimportrequestsimportreimportcsvfromfake_useragentimportUserAgent#re文档:#https://docs.python.org/zh-cn/3.8/library/re.html#re.Sheader=......
  • 【爬虫】第三章-解析库的使用
    目录正则表达式XPathBeautifulSoupCSS-Selectorpyquery正则表达式XPathhttps://www.w3school.com.cn/xpath/xpath_axes.aspBeautifulSoupCSS-Selectorhttps://www.w3school.com.cn/css/css_list.asppyquery......
  • 【爬虫】项目篇-使用xpath爬取搜房网二手房信息
    #使用requests和xpath从搜房网上抓取福州地区的二手房房源信息#(要求获取所有分页上的房源,且每套房源包含标题、楼盘、#地点、经纬度、面积、房型、楼层、朝向、建筑年代、单价、总价、经纪人、联系电话等,缺数据的留空)。importrequestsfromlxmlimportetreefromfake_use......
  • 小白学python爬虫1
    """爬虫:通过编写程序来获取互联网上的资源需求:用程序模拟浏览器,输入一个网址,从该网址获取到资源或者内容"""#fromurllib.requestimporturlopen#url网址##url="http://www.baidu.com"#resp=urlopen(url)###print(resp.read().decode("utf-8"))......
  • Python爬虫之分布式爬虫
    分布式爬虫1.详情介绍        分布式爬虫是指将一个爬虫任务分解成多个子任务,在多个机器上同时执行,从而加快数据的抓取速度和提高系统的可靠性和容错性的技术。        传统的爬虫是在单台机器上运行,一次只能处理一个URL,而分布式爬虫通过将任务分解成多个子......
  • (某网站)评论爬虫+wordcloud可视化
    目录一、序二、没变化的三、没怎么变的四、全牛魔变了的五、全代码六、后记,但没完全后记七,词云图一、序打正大杯的时候,需要面向女性群体的信息收集,当时想到爬xhs相关笔记评论的数据本着面向csdn编程的心态,蒟蒻在csdn上狂搜各类“某网站爬虫”,什么“某网站 爬虫”,......
  • Python爬虫如何快速入门
    写了几篇网络爬虫的博文后,有网友留言问Python爬虫如何入门?今天就来了解一下什么是爬虫,如何快速的上手Python爬虫。一、什么是网络爬虫网络爬虫,英文名称为WebCrawler或Spider,是一种通过程序在互联网上自动获取信息的技术。它根据指定的规则,从互联网上下载网页、图片、视......
  • 如何利用爬虫与数据分析指导选择首篇小说类型:第三章通过免费代理网站建立ip池
    如何利用爬虫与数据分析指导选择首篇小说类型:第三章通过免费代理网站建立ip池第三章通过免费代理网站建立ip池文章目录如何利用爬虫与数据分析指导选择首篇小说类型:第三章通过免费代理网站建立ip池前言一、获取免费ip1.封装requests请求网址方法2.获取代理ip—开心代......