Python爬取股票数据存入数据库
1. 整体流程
为了帮助你理解如何使用Python爬取股票数据并存入数据库,我将整个流程分为以下几个步骤:
- 网络请求:使用Python中的
requests
库向股票数据源发送HTTP请求,获取股票数据。 - 数据解析:使用Python中的
BeautifulSoup
库解析HTML页面,提取出需要的股票数据。 - 数据存储:使用Python中的数据库库(如
sqlite3
)将提取的股票数据存储到数据库中。
下面将逐步详细介绍每个步骤的具体操作。
2. 网络请求
在这一步,我们将使用requests
库向股票数据源发送HTTP请求,获取股票数据。你需要使用以下代码片段:
import requests
# 发送HTTP请求获取股票数据
def fetch_stock_data():
url = " # 替换为实际的股票数据源URL
response = requests.get(url)
if response.status_code == 200:
return response.text
else:
return None
在这个代码片段中,我们定义了fetch_stock_data
函数,该函数发送HTTP请求到股票数据源URL,并返回响应的文本数据。你需要将url
替换为实际的股票数据源URL。
3. 数据解析
在这一步,我们将使用BeautifulSoup
库解析HTML页面,提取出需要的股票数据。你需要使用以下代码片段:
from bs4 import BeautifulSoup
# 解析HTML页面获取股票数据
def parse_stock_data(html):
soup = BeautifulSoup(html, "html.parser")
table = soup.find("table") # 根据实际情况找到包含股票数据的HTML表格
data = []
for row in table.find_all("tr"):
cells = row.find_all("td")
if len(cells) > 1:
stock = {
"symbol": cells[0].text,
"name": cells[1].text,
"price": cells[2].text,
# 更多需要的字段...
}
data.append(stock)
return data
在这个代码片段中,我们定义了parse_stock_data
函数,该函数使用BeautifulSoup
库解析HTML页面,并返回提取的股票数据。你需要根据实际情况找到包含股票数据的HTML表格,并根据需要提取更多字段。
4. 数据存储
在这一步,我们将使用数据库库(如sqlite3
)将提取的股票数据存储到数据库中。你需要使用以下代码片段:
import sqlite3
# 将股票数据存储到数据库中
def save_stock_data(data):
conn = sqlite3.connect("stock.db") # 连接到数据库(如果不存在将自动创建)
c = conn.cursor()
# 创建股票数据表(如果不存在)
c.execute('''CREATE TABLE IF NOT EXISTS stocks
(symbol TEXT, name TEXT, price REAL)''')
# 插入股票数据
for stock in data:
c.execute("INSERT INTO stocks VALUES (?, ?, ?)",
(stock["symbol"], stock["name"], stock["price"]))
# 提交更改并关闭数据库连接
conn.commit()
conn.close()
在这个代码片段中,我们定义了save_stock_data
函数,该函数连接到数据库(如果不存在将自动创建),创建股票数据表(如果不存在),然后将股票数据插入到表中。
你需要将sqlite3.connect("stock.db")
替换为实际的数据库连接字符串,以便连接到你的数据库。同时,你可以根据需要修改数据表的结构和插入的字段。
5. 完整代码
下面是整个流程的完整代码:
import requests
from bs4 import BeautifulSoup
import sqlite3
# 发送HTTP请求获取股票数据
def fetch_stock_data():
url = " # 替换为实际的股票数据源URL
response = requests.get(url)
if response.status_code == 200:
return response.text
else:
return None
# 解析HTML页面获取股票数据
def parse_stock_data(html):
soup = BeautifulSoup(html, "html.parser")