当前位置:AIGC资讯 > 数据采集 > 正文

python 爬虫爬取疫情数据,爬虫思路和技术你全都有哈(一)

python 爬虫爬取疫情数据,爬虫思路和技术你全都有哈(二、数据清洗及存储)

爬起疫情数据,有两个网址:

        1、百度:链接

        2、丁香园疫情:链接

在这两个中,丁香园的爬虫相对简单一点,所以今天就展示一哈,百度的,哈哈哈。毕竟挑战一哈自己,看看有啥缺陷。不过确实在找数据方面,存在很多的问题,有很多地方需要学习哈。

但是看完这篇后,你再写丁香园的爬虫代码的时候,就很简单了。

可以自己尝试一下,给自己定个小目标,先来学习百度爬虫代码,课后作业,丁香爬虫代码

今日任务爬虫爬取疫情数据,我们向着百度疫情API伸出了万恶的魔爪哈!!!

目录

本次所用到的库:

爬虫思路

       第一步: 确定爬取的网站连接

       第二步:确定静态数据或动态数据,确定数据的位置

         第三步:怎样解析数据        

代码部分

第一步:请求网站(记得导入包哈)

第二步:解析所得到的网页源码

第三步:数据清洗

中国疫情地图制作

本次所用到的库:

import requests                                          HTTP请求库 from lxml import etree                               xpath解析库 import json                                                 json数据格式包 from pyecharts.charts import Map             绘制中国疫情地图的包 from pyecharts import options as opts       绘制条形图的库 import pymysql                                           mysql数据库调用接口

就不仔细讲这些库的作用了,后面代码部分在一起讲给大家听哈。

首先,先说思路哈

爬虫思路

       第一步: 确定爬取的网站连接

                        百度:爬取疫情数据链接

       第二步:确定静态数据或动态数据,确定数据的位置

                进入一个陌生的网站,首先确定是静态数据还是动态数据(又称前后端分离页面),先查看是否未静态页面(进入源码页),然后再查看是否未动态数据(进入开发者模式),进入源码页。你就会看到这样一幕(我偷偷找了好久,最好在script标签里面看到了,属实是第一次遇到这种情况),当下滑动条往右边拉的时候 ,你就会绝望了哈。

         第三步:怎样解析数据        

        确定是静态数据之后,可以选择用re(正则)、xpath等,进行解析页面数据哈。

        本文用的是xpath哈,前面已经说过了。而且这样的数据,必然是一个json数据,所以需要进行转换哈。str 转 json数据格式,就必须用到,json包中的json.loads()函数哈。但是在转换之前也能看到这些字符是有点不对劲的,所以还需要再 str 数据格式中进行转换utf-8字符集。

思路差不多就是这些了哈,在没有做反爬的基础上,大部分爬虫都是这三步

然后就是代码部分了哈

代码部分

一步一步来,慢慢给你们讲清楚哈

第一步:请求网站(记得导入包哈)

def HTTP_get(url):
    resp = requests.get(url)
    resp.encoding = 'utf-8'
    return resp.text


if __name__ == '__main__':

url = 'https://voice.baidu.com/act/newpneumonia/newpneumonia/?from=osari_aladin_banner&city='

resp = HTTP_get(url)
print(resp)

请求成功后返回的是网页源码,此时数据格式是str格式,而我们需要的数据也在其中

第二步:解析所得到的网页源码

def xpath_json(resp):
    print('xpath_json  ------  2')
    html = etree.HTML(resp)
    str_list = html.xpath("//script[@id='captain-config']/text()")
    str_list = str_list[0].replace('\'', '')  # 去掉 '' 单引发
    str_list = str_list.encode('utf-8')  # 转码字符集,转码中文
    # str_list = str_list.encode('utf-8').decode('unicode_escape')  # 转码字符集,转码中文
    json_list = json.loads(str_list)

    return json_list



if __name__ == '__main__':

    url = 'https://voice.baidu.com/act/newpneumonia/newpneumonia/?from=osari_aladin_banner&city='
    
    # 请求HTTP
    resp = HTTP_get(url)
    print(resp)
    
    # 解析数据
    json_list = xpath_json(resp)
此时输出的数据是json格式的数据,并且是我们需要的数据,但是因为数据太繁杂,太乱,所以我们还需要清洗数据

下面将是清洗数据

python 爬虫爬取疫情数据,爬虫思路和技术你全都有哈(二、数据清洗及存储)

更新时间 2023-11-08