You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python抓取科技产品并将抓取数据存入数据库?

用Python抓取科技产品数据并存入数据库的完整流程

以下是从基础到落地的分步操作,都是入门级实现,适合新手理解:

一、网页数据抓取(静态页面)

用requests库获取网页源码,BeautifulSoup解析提取数据,这俩是最基础的组合,容易上手。

1. 先安装依赖

pip install requests beautifulsoup4

2. 抓取示例代码

假设你要抓取的是静态科技产品列表页,比如某网站的笔记本产品页面:

import requests
from bs4 import BeautifulSoup
import time

def scrape_tech_products(url):
    # 设置请求头,模拟浏览器访问,避免被拦截
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
    }
    
    try:
        # 发送请求获取网页内容
        response = requests.get(url, headers=headers)
        response.raise_for_status()  # 如果请求失败,抛出异常
        soup = BeautifulSoup(response.text, "html.parser")
        
        # 提取产品数据(这里要根据目标网站的HTML结构调整选择器)
        products = []
        product_items = soup.find_all("div", class_="product-item")  # 假设产品项的class是product-item
        
        for item in product_items:
            product = {}
            # 提取产品名称
            product["name"] = item.find("h3", class_="product-name").get_text(strip=True)
            # 提取价格
            product["price"] = item.find("span", class_="product-price").get_text(strip=True)
            # 提取型号
            product["model"] = item.find("p", class_="product-model").get_text(strip=True)
            products.append(product)
            
        return products
    
    except Exception as e:
        print(f"抓取出错: {e}")
        return []

# 调用函数(替换成你要抓取的目标URL)
target_url = "https://example.com/tech-products"
products_data = scrape_tech_products(target_url)

关键提示:

  • 打开目标网站的开发者工具(F12),查看产品元素的HTML结构,调整find/find_all的参数(比如class名称)
  • 不要频繁请求,每次请求后加time.sleep(1),避免被网站封禁IP
  • 如果是动态加载的页面(比如滚动加载、JS渲染),可以用selenium库,但先搞定静态页面的基础操作

二、搭建数据库(用SQLite,无需额外安装)

Python自带SQLite,不用装数据库服务,适合新手快速上手。

1. 创建数据库和表

import sqlite3
from datetime import datetime

def init_database():
    # 连接数据库(不存在则自动创建)
    conn = sqlite3.connect("tech_products.db")
    cursor = conn.cursor()
    
    # 创建产品表
    create_table_sql = """
    CREATE TABLE IF NOT EXISTS products (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT NOT NULL,
        price TEXT,
        model TEXT,
        create_time DATETIME DEFAULT CURRENT_TIMESTAMP
    )
    """
    cursor.execute(create_table_sql)
    conn.commit()
    conn.close()

# 初始化数据库
init_database()

三、将抓取的数据存入数据库

把之前抓取到的products_data插入到SQLite数据库中:

def save_to_database(products):
    conn = sqlite3.connect("tech_products.db")
    cursor = conn.cursor()
    
    # 批量插入数据(参数化查询,防止SQL注入)
    insert_sql = """
    INSERT INTO products (name, price, model)
    VALUES (?, ?, ?)
    """
    # 构造插入参数
    data = [(p["name"], p["price"], p["model"]) for p in products]
    cursor.executemany(insert_sql, data)
    
    conn.commit()
    print(f"成功存入 {cursor.rowcount} 条数据")
    conn.close()

# 调用保存函数
if products_data:
    save_to_database(products_data)

四、验证数据是否存入

可以用SQLite浏览器打开tech_products.db查看,或者用代码查询:

def query_data():
    conn = sqlite3.connect("tech_products.db")
    cursor = conn.cursor()
    
    cursor.execute("SELECT * FROM products LIMIT 5")
    rows = cursor.fetchall()
    for row in rows:
        print(row)
    
    conn.close()

# 查询验证
query_data()

额外注意事项:

  • 遵守目标网站的robots.txt规则,不要抓取禁止爬取的内容
  • 如果需要大规模抓取,可以考虑用scrapy框架,但先从基础组合入手
  • 数据清洗:抓取到的价格可能带符号(比如¥),可以提前处理成数字类型,方便后续分析

内容的提问来源于stack exchange,提问作者Shush

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 12:17:41