zoukankan      html  css  js  c++  java
  • python爬取世界疫情信息到Mysql

    一、表结构

    二、具体代码(python)

    import json
    
    import pymysql
    import requests
    from bs4 import BeautifulSoup
    import datetime
    
    url = 'https://ncov.dxy.cn/ncovh5/view/pneumonia?from=timeline&isappinstalled=0'  # 请求地址
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36'}  # 创建头部信息
    response = requests.get(url, headers=headers)  # 发送网络请求
    content = response.content.decode('utf-8')
    soup = BeautifulSoup(content, 'html.parser')
    
    # 世界确诊getAreaStat
    listB = soup.find_all(name='script', attrs={"id": "getListByCountryTypeService2true"})
    
    world_messages = str(listB)[95:-21]
    
    print(world_messages)
    world_messages_json = json.loads(world_messages)
    worldList = []
    now_time = datetime.datetime.now().strftime('%Y-%m-%d')
    
    for k in range(len(world_messages_json)):
        worldvalue = (now_time,
                      world_messages_json[k].get('countryType'), world_messages_json[k].get('continents'),
                      world_messages_json[k].get('provinceId'), world_messages_json[k].get('provinceName'),
                      world_messages_json[k].get('provinceShortName'), world_messages_json[k].get('cityName'),
                      world_messages_json[k].get('currentConfirmedCount'), world_messages_json[k].get('confirmedCount'),
                      world_messages_json[k].get('suspectedCount'), world_messages_json[k].get('curedCount'),
                      world_messages_json[k].get('deadCount'), world_messages_json[k].get('locationId'),
                      world_messages_json[k].get('countryShortCode'),)
        worldList.append(worldvalue)
    
    db = pymysql.connect("localhost", "root", "0000", "yiqing", charset='utf8')
    cursor = db.cursor()
    
    sql_world = "INSERT INTO world_map values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
    
    worldTuple = tuple(worldList)
    print(worldTuple)
    
    try:
        cursor.executemany(sql_world, worldTuple)
        db.commit()
    except:
        print('执行失败,进入回调2')
        db.rollback()
    
    db.close()
  • 相关阅读:
    TextBox类的成员
    【VB.Net】字节数与字符数的取得
    限制文本框的输入类型
    【转】FxCop 设计规则
    【Spread Sheet 应用(三)】Enter移向下一个单元格
    【ASP.NET】打开关闭新窗体
    常用字符对应ASCII码值
    初识CodeSmith分享两个模板
    【VB.NET】自定义控件(一)属性说明
    LeetCode: Length of Last Word
  • 原文地址:https://www.cnblogs.com/dd110343/p/12681609.html
Copyright © 2011-2022 走看看