import requests # 调用申请模块
import json # 调用json数据模块
import sqlite3 # 引入数据库
from func_items import Esport_Sql, Esport_User # 从功能模块调用电竞圈数据库函数
class E_Sport(object):
'''一个电竞圈的数据模型'''
def __init__(self):
'''定义数据模型的基本属性'''
self.url = 'http://api2.dianjingquan.cn:3004/match/query/list?page=1&page_count=40&key=&status=all&game_id=0'#初始网址
self.headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
}#请求头
self.create_table()#调用静态函数,创建数据库表
self.document = ''#定义获取到的网页源码转换后的json格式数据,初始值为空
self.response = '' #定义返回的网页源代码数据,初始值为空
self.error_count = 0 #定义错误次数初始值为0
@staticmethod # 静态函数装饰器
def create_table():
'''创建数据库表的静态函数'''
database = sqlite3.connect('E_Sport.db') # 连接数据库
cursor = database.cursor() # 启动游标
sql_01 = "CREATE TABLE IF NOT EXISTS E_Sport_Match(m_id INTEGER PRIMARY KEY,m_title VARCHAR (20),m_name VARCHAR (10),m_date VARCHAR (30),m_reward VARCHAR (10),game_rules TEXT,details TEXT,m_max_count VARCHAR (10),m_count VARCHAR (10),m_img CHAR,m_url CHAR )" # 创建数据表,存放赛事信息
cursor.execute(sql_01)#执行sql语句
sql_02 = "CREATE TABLE IF NOT EXISTS E_Sport_User(user_id INTEGER PRIMARY KEY ,user_name VARCHAR (10),add_time VARCHAR (20),mobile VARCHAR (20))" # 创建数据表,存放玩家信息
cursor.execute(sql_02) # 执行sql语句
cursor.close() # 关闭游标
database.close() # 关闭数据库
def get_html(self, is_list=True):
'''采集函数 发请求 拿数据'''
try: # 调用异常捕获,以防程序报错
response = requests.get(self.url, headers=self.headers) # 发请求 拿回数据
self.response = response.text #text