Python爬取股票数据存入数据库

1. 整体流程

为了帮助你理解如何使用Python爬取股票数据并存入数据库,我将整个流程分为以下几个步骤:

  1. 网络请求:使用Python中的requests库向股票数据源发送HTTP请求,获取股票数据。
  2. 数据解析:使用Python中的BeautifulSoup库解析HTML页面,提取出需要的股票数据。
  3. 数据存储:使用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")