中国の新しい王冠流行ビッグデータ表示システム


プロジェクト
中国の新しい王冠流行ビッグデータ表示システム
プロジェクトの完了には7日かかり、ページは6つの機能で実装されます。左上と下の機能は 地域のリスク評価 今日 Baidu検索であり、2つの機能の真ん中は 合計データ表示 リアルタイムデータです。マップの 上下の機能は、2つの 州の累積確認済みランキングで あり、 今日の発生は統計州 発生します。これらのデータのソースは、爬虫類を介して各サイトをクロールし、合計3つのサイトをクロールします。次に、Takeに登る方法を示します。これらの6つの関数のデータソースを作成し、すべての人が自分のプロジェクトにコピーして学習できるようにソースコードを添付します。

Pythonクローラー

PythonクローラーがNetEaseニュースの流行データをクロールする

NetEaseニュースの流行データをクロールするURLは次のとおりです。https://wp.m.163.com/163/page/news/virus_report/index.htmlnw = 1&anw = 1、このURLはjsonファイルデータを返します、F12のネットワークで表示できます。jsonファイルを処理してcsvファイルに変換すると非常に便利です。コードは次のように表示されます。

NetEaseニュースの流行データをcsvファイルにクロールします。

import pandas as pd
import requests
headers={
    'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36'
}
url='https://c.m.163.com/ug/api/wuhan/app/data/list-total?'
res=requests.get(url,headers=headers)
import json
data_json=json.loads(res.text)
data=data_json['data']
data_province=data['areaTree'][2]['children']
print(data_province)
free_data=pd.DataFrame(data_province)[['id','lastUpdateTime','name']]
today_data=pd.DataFrame([province['today'] for province in data_province])
total_data=pd.DataFrame([province['total'] for province in data_province])
today_data.columns=("today_"+i for i in today_data.columns)
total_data.columns=("total_"+i for i in total_data.columns)
China_data=pd.concat([free_data,today_data,total_data],axis=1)
import time
# file_name='今天中国各省'+'_'+time.strftime('%Y_%m_%d',time.localtime(time.time()))+'.csv'
file_name='C:/Users/DELL/Desktop/machine_learning/COVID-19_crawler/china_today_data'+'.csv'
China_data.to_csv(file_name,index=None,encoding='utf_8_sig')
print("中国的各省疫情数据保存成功啦!")

コードのアイデアは、ウェブページから返されたjsonデータを取得することであり、Pythonクラスを使用してデータを処理し、必要なデータを取得します。

次に、csvファイルデータをmysqlにインポートします。

import pymysql
import csv
import codecs

def get_conn():
    conn = pymysql.connect(host='localhost', port=3307, user='root', passwd='123456', db='china_covid-19', charset='utf8')
    return conn

def insert(cur, sql, args):
    cur.execute(sql, args)

def read_csv_to_mysql(filename):
    with codecs.open(filename=filename, mode='r', encoding='utf-8') as f:
        reader = csv.reader(f)
        head = next(reader)
        conn = get_conn()
        cur = conn.cursor()
        sql = 'insert into china_today_data values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)'
        cur.execute("Delete from china_today_data where 1=1")
        conn.commit()
        for item in reader:
            args = tuple(item)
            insert(cur, sql=sql, args=args)

        conn.commit()
        cur.close()
        conn.close()

if __name__ == '__main__':
    read_csv_to_mysql('C:/Users/DELL/Desktop/machine_learning/COVID-19_crawler/china_today_data.csv')

NetEaseニュースの流行データの私のmysqlテーブル構造:

中国の今日の流行データシート
ChinaTodayのデータテーブル構造
China Today Epidemic Data Tableの構造は次のとおりです。合計18フィールドで、各フィールドタイプはvarcharです。その理由は、csvファイルからmysqlに転送するプロセスがデフォルトでvarcharの形式であるためです。

Pythonクローラーは、さまざまな地域のリスク評価データをクロールします

各地域のリスク評価レベルをクロールするウェブサイトは次のとおりです。http://www.gd.gov.cn/gdywdt/zwzt/yqfk/content/post_3021711.html、このウェブサイトのインターフェースは安定しており、変更されていません。ウェブサイトのデータを安定してクロールできます。コードは次のとおりです。

さまざまな地域でのリスク評価データのクロール

#Python爬取中高风险地区名单代码
import requests
from bs4 import BeautifulSoup
import pandas as pd

def getHTML(url):
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return ""


def getContent(url):
    html = getHTML(url)
    soup = BeautifulSoup(html, 'html.parser')
    paras_tmp = soup.select('.zw-title')+soup.select('p')
    paras = paras_tmp[0:]
    return paras


def saveFile(text):

    # datetimes = time.strftime("%Y-%m-%d",time.localtime(time.time()))
    fname = "C:/Users/DELL/Desktop/machine_learning/COVID-19_crawler/"+r"Webdata.txt"
    f = open(fname, 'w')
    for t in text:
        if len(t) > 0:
            f.writelines(t.get_text() + "\n\n")
    f.close()

def saveCSV(name,list):
    test = pd.DataFrame(columns=name, data=list)  # 数据有三列,列名分别为one,two,three
    # datetimes = time.strftime("%Y-%m-%d", time.localtime(time.time()))
    fname = "C:/Users/DELL/Desktop/machine_learning/COVID-19_crawler/"+r"list_of_grade_risk_areas.csv"
    test.to_csv(fname, encoding='utf-8')

def main():
    url = 'http://www.gd.gov.cn/gdywdt/zwzt/yqfk/content/mpost_3021711.html'
    text = getContent(url)
    saveFile(text)

    # 打开文本文件
    fp = open('C:/Users/DELL/Desktop/machine_learning/COVID-19_crawler/Webdata.txt', 'r')
    # 使用readlines读取
    lines = fp.readlines()

    ss2 = []
    for line in lines:
        # 将读取的每行内容过滤掉换行符,如果不加这个条件,输入的内容中将会添加换行符\n
        line = line.strip('\n')
        line = line.strip('\u3000')
        ss = line.split('\n') # 将每行内容根据=分割

        if(ss != ['']):
            ss2.append(ss)
    while [] in ss2:
        ss2.remove([''])
    ss2.pop()
    name=['title','high_risk_areas','high_areas','low_risk_areas','low_areas']
    new_ss2=[];
    list=[];
    for i in range(0,len(ss2)):
        new_ss2.append(ss2[i][0])
    list.append(new_ss2)
    saveCSV(name,list)
    fp.close()


main()

クローラーのアイデアは、Webページに表示されているすべてのHTMLコンテンツを直接クロールし、そこから必要なフィールドを除外することです。フィルタリングされたフィールドをtxtファイルに保存してから、txtファイルからデータを読み取り、csvファイルに転送します。

次に、csvファイルデータをmysqlにインポートします。

import pymysql
import csv
import codecs

def get_conn():
    conn = pymysql.connect(host='localhost', port=3307, user='root', passwd='123456', db='china_covid-19', charset='utf8')
    return conn

def insert(cur, sql, args):
    cur.execute(sql, args)

def read_csv_to_mysql(filename):
    with codecs.open(filename=filename, mode='r', encoding='utf-8') as f:
        reader = csv.reader(f)
        head = next(reader)
        conn = get_conn()
        cur = conn.cursor()
        sql = 'insert into list_of_grade_risk_areas values(%s,%s,%s,%s,%s,%s)'
        cur.execute("Delete from list_of_grade_risk_areas where 1=1")
        conn.commit()
        for item in reader:
            args = tuple(item)
            insert(cur, sql=sql, args=args)

        conn.commit()
        cur.close()
        conn.close()

if __name__ == '__main__':
    read_csv_to_mysql('C:/Users/DELL/Desktop/machine_learning/COVID-19_crawler/list_of_grade_risk_areas.csv')

さまざまな地域でのリスク評価のMymysqlテーブル構造:

地域別のリスク評価のMySQLテーブル
さまざまな地域のリスク評価グレードのMySQLテーブル構造
上記は、クローラーを使用してさまざまな地域のリスク評価をクロールし、クローラーのクロールデータを記録し、データをcsvファイルに変換してmysqlに保存するプロセスです。あなたに少しの助けがあり、一生懸命働き、一緒に進歩することを願っています!

Pythonクローラーが今日Baiduのホット検索リストをクロールします

次のようにBaiduホット検索リストをクロールしましょう:http://top.baidu.com/buzz?b = 1&fr =20811。このWebサイトのインターフェイスは安定しており、変更されていません。プログラムを1回作成するだけで、データを安全にクロールできます。 。。コードは次のように表示されます。

Baiduのホット検索リストデータをcsvファイルにクロールします。

# 爬取百度热搜榜数据放入csv文件中
# 导入相关库
from bs4 import BeautifulSoup
import pandas as pd
import requests
import time


def get_html(url, headers):
    r = requests.get(url, headers=headers)
    r.encoding = r.apparent_encoding
    return r.text


def get_pages(html):
    soup = BeautifulSoup(html, 'html.parser')
    all_topics = soup.find_all('tr')[1:]
    data=[];
    for each_topic in all_topics:
        topic_times = each_topic.find('td', class_='last')  # 搜索指数
        topic_rank = each_topic.find('td', class_='first')  # 排名
        topic_name = each_topic.find('td', class_='keyword')  # 标题目
        if topic_rank != None and topic_name != None and topic_times != None:
            topic_rank = each_topic.find('td', class_='first').get_text().replace(' ', '').replace('\n', '')
            topic_name = each_topic.find('td', class_='keyword').get_text().replace(' ', '').replace('\n', '')
            topic_times = each_topic.find('td', class_='last').get_text().replace(' ', '').replace('\n', '')
            # print('排名:{},标题:{},热度:{}'.format(topic_rank,topic_name,topic_times))
            tplt = "排名:{0:^4} 标题:{1:{3}^15} 热度:{2:^8}"
            data.append(tplt.format(topic_rank, topic_name, topic_times, chr(12288)))
    test = pd.DataFrame(columns=['news'], data=data)  # 数据有三列,列名分别为one,two,three
    # datetimes = time.strftime("%Y-%m-%d", time.localtime(time.time()))
    # fname = "./" + datetimes + r"baidu_hot_search.csv"
    fname = "C:/Users/DELL/Desktop/machine_learning/COVID-19_crawler/" + r"baidu_hot_search.csv"
    test.to_csv(fname, encoding='utf-8')

def main():
    # 百度热点排行榜单链接
    url = 'http://top.baidu.com/buzz?b=1&fr=20811'
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36'}
    html = get_html(url, headers)
    get_pages(html)


if __name__ == '__main__':
    main()

コードのアイデアは、最初にWebページ上のデータをクロールし、それをjson形式に変換してから、json形式のデータをcsvファイルにダンプすることです.csvファイルをmysqlに簡単にインポートして、csvファイルを作成することができますデータはmysqlデータベースデータに直接変更できます。

次に、csvファイルデータをmysqlにインポートします。

#将csv文件导入到mysql中
import pymysql
import csv
import codecs


def get_conn():
    conn = pymysql.connect(host='localhost', port=3307, user='root', passwd='123456', db='china_covid-19', charset='utf8')
    return conn


def insert(cur, sql, args):
    cur.execute(sql, args)


def read_csv_to_mysql(filename):
    with codecs.open(filename=filename, mode='r', encoding='utf-8') as f:
        reader = csv.reader(f)
        head = next(reader)
        conn = get_conn()
        cur = conn.cursor()
        sql = 'insert into baidu_hot_search values(%s,%s)'
        cur.execute("Delete from baidu_hot_search where 1=1")
        conn.commit()
        for item in reader:
            args = tuple(item)
            insert(cur, sql=sql, args=args)

        conn.commit()
        cur.close()
        conn.close()


if __name__ == '__main__':
    read_csv_to_mysql('C:/Users/DELL/Desktop/machine_learning/COVID-19_crawler/baidu_hot_search.csv')

私のBaiduホット検索リストのmysqlテーブル構造:

Baiduホット検索リストMySQLテーブルstructureOne
Baiduホット検索mysqlテーブルstructureTwo
これまで、Baiduのホット検索リストのデータをクロールしてcsvファイルに入れるクローラーの作成を紹介しました。また、csvファイルデータをmysqlに保存する方法も紹介しました。mysqlテーブル構造は私のものと同じように構築されています。データのインポートを実現します。そうでない場合は、インポートできるようにコードを変更する必要があります。私があなたを助けることができることを願っています、読んでくれてありがとう!

総括する:

この記事では、クローラーを使用してWebページデータをクロールし、それをmysqlデータベースに配置する方法を紹介します。中国の新しいクラウンエピデミックビッグデータディスプレイシステム私はバックエンドにphpを使用し、フロントエンドにjquery + Echartsを使用して大画面表示を行い、ajaxをフロントエンドとバックエンドの相互作用に使用しています。上記のコードは、必要なデータにクロールするのに十分であり、バックエンドを実現するためにJAVAを選択することもできます。データはオイルです。オイルを使用すると、自分で車を作ることができます。この記事がお役に立てば幸いです。私はダークホースのジャックです。プログラミングの道にあるすべての障害を克服し、前進し続けます。
-ブラックホースジャック

おすすめ

転載: blog.csdn.net/m0_46991388/article/details/114827023