from bs4 import BeautifulSoup
import re
import json
response = requests.get('https://ncov.dxy.cn/ncovh5/view/pneumonia')
home_page = response.content.decode()
# 2.从疫情首页提取最近一日数据
soup = BeautifulSoup(home_page, 'lxml')
script = soup.find(id='getAreaStat')
text = script.string
# 3.提取数据获取json格式数据
json_str = re.findall(r'\[.+\]', text)[0]
# 4.把json格式转换为python类型
last_day_corona_virus = json.loads(json_str)
# 5.以json格式保存最近一日数据
with open('data/last_day_coronavirus.json', 'w') as fp:
json.dump(last_day_corona_virus, fp, ensure_ascii=False)
爬取国内疫情数据。data_download(),引用包requests、json。1)访问网站获取数据;2)保存数据成json文件将数据转存到excel。cpdata_toexcel(),引用包openpyxl、json。
1)从json文件中抽取所需数据,字段需求:省份、地市、总确诊人数、总疑似病例、总死亡人数。
2)创建Excel表,数据保存。
读取文件数据画疫情地图。show_data(),引用包pandas、pyecharts。
如今各大网站的反爬机制已经可以说是到了丧心病狂的程度,比如大众点评的字符加密、微博的登录验证等。相比较而言,新闻网站的反爬机制就要稍微弱一点。因此今天以新浪新闻为例,分析如何通过Python爬虫按关键词抓取相关的新闻。首先,如果从新闻直接进行搜索,你会发现其内容最多显示20页,因此我们要从新浪的首页进行搜索,这样才没有页数的限制。