在数据科学和分析领域,获取和存储数据是至关重要的一步。本教程将介绍如何使用Python编程,从一个网站获取双色球(SSQ)彩票的历史数据,并将这些数据存入MySQL数据库。这个教程将向您展示如何使用Python的Requests库来获取数据,以及如何使用Pymysql库将数据存入数据库中。这是一个非常实用的示例,可以帮助您了解如何从网站爬取数据并进行数据库操作。
准备工作
在开始之前,您需要确保已经安装了以下Python库:
- Requests:用于发送HTTP请求和获取网页内容。
- Pymysql:用于与MySQL数据库交互。
您可以使用以下命令来安装这些库:
pip install requests pymysql
此外,您还需要拥有一个MySQL数据库,并知道连接数据库所需的主机、用户名和密码。在教程的后续部分,我们将向数据库插入数据。
获取彩票数据
首先,我们需要从一个网站获取双色球彩票的历史数据。我们将使用Python的Requests库来发送HTTP POST请求,并将响应解析为JSON格式。以下是获取数据的代码示例:
import requests
import json
headers ={
'Content-Type': 'application/json',
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
}
data ={
"limit": 20,
"page": 1,
"params": {}
}
resp = requests.post('https://ms.zhcw.com/proxy/lottery-chart-center/history/SSQ', headers=headers, data=json.dumps(data))
result = json.loads(resp.text)['datas']
在上述代码中,我们发送了一个HTTP POST请求到指定的URL,并将响应解析为JSON格式。这个URL包含了彩票数据的API端点,您可以根据需要修改URL来获取不同的数据。
处理彩票数据
接下来,我们需要处理从网站获取的彩票数据,以便将其存入数据库。我们将数据存储在一个列表中,每个元素都代表一期彩票的信息,包括期号、开奖日期、星期几以及中奖号码。我们还对数据进行了排序,以确保按期号的顺序存入数据库。
def historyData():
h_data_list = []
for i in range(len(result)):
issue = result[i]['issue']
openDate = result[i]['openDate']
week = result[i]['week']
winningFrontNum = result[i]['winningFrontNum']
winningBackNum = result[i]['winningBackNum']
h_data_list.append([issue, openDate, week,winningFrontNum,winningBackNum])
h_data_list = sorted(h_data_list, key=lambda x: x[0]) # 从小到大排序
连接数据库并创建表
现在,我们将使用Pymysql库来连接到MySQL数据库,并创建一个表来存储彩票数据。在下面的代码示例中,您需要替换掩码字符(****)为您的数据库主机、用户名和密码。
import pymysql
# 连接数据库
conn = pymysql.connect(host='****', user='root', password='***', db='mysql')
cursor = conn.cursor()
# 创建表
cursor.execute('''CREATE TABLE IF NOT EXISTS ssq_lottery_history
(id INT PRIMARY KEY AUTO_INCREMENT,
issue VARCHAR(20),
openDate VARCHAR(20),
week VARCHAR(20),
winningFrontNum VARCHAR(20),
winningBackNum VARCHAR(20)
)''')
在上述代码中,我们使用Pymysql库连接到数据库,并执行SQL语句来创建表格。如果表格已经存在,它将不会被重新创建。
插入数据到数据库
现在,我们将彩票数据插入到数据库表中。以下是将数据插入数据库的代码示例:
# 向表中插入数据
for item in h_data_list:
cursor.execute('''INSERT INTO ssq_lottery_history (issue, openDate, week,winningFrontNum,winningBackNum)
VALUES (%s, %s, %s, %s, %s)''', (item[0], item[1], item[2], item[3], item[4]))
print("存入数据库成功")
# 提交数据并关闭连接
conn.commit()
cursor.close()
conn.close()
在上述代码中,我们使用循环遍历彩票数据列表,并将每一项数据插入到数据库表中。然后,我们提交更改并关闭数据库连接。
运行脚本
最后,您可以运行这个Python脚本来获取彩票数据并将其存入数据库。确保您已经准备好了数据库,并且在运行脚本之前替换了数据库连接的主机、用户名和密码。
if __name__ == '__main__':
historyData()
结论
通过本教程,您学会了如何使用Python编程从网站获取彩票数据,并将其存入MySQL数据库。这是一个实际的应用示例,可以帮助您了解如何使用Python的Requests库和Pymysql库来处理网络数据和数据库操作。希望这个教程对您有所帮助,让您能够更好地处理和管理数据。
请注意:本教程仅供学习和参考,不鼓励或支持任何侵犯法律或道德准则的行为。请在合法范围内使用Python编程技术。