🎯 Trình duyệt đám mây tùy chỉnh, chống phát hiện được hỗ trợ bởi Chromium tự phát triển, thiết kế dành cho trình thu thập dữ liệu webtác nhân AI. 👉Dùng thử ngay
Quay lại blog

DeepSeek Web Scraping: Chuyển đổi HTML Table-Soup thành JSON sạch

James Thompson
James Thompson

Scraping and Proxy Management Expert

29-Jul-2026

Tóm tắt:

  • DeepSeek là công cụ trích xuất ngân sách, và nó xứng đáng với danh hiệu này trong các mã đánh dấu lộn xộn. Một lần chạy trực tiếp trong hướng dẫn này đã lấy 10 bản ghi có cấu trúc — văn bản, tác giả, danh sách thẻ — từ một trang bảng lồng nhau với 3,397 token trên một mô hình có giá dưới 1 xu cho mỗi triệu token đầu vào.
  • API chỉ cần thay đổi base_url. Điểm cuối của DeepSeek tương thích với OpenAI: SDK Python chính thức của OpenAI chỉ cần hướng đến https://api.deepseek.com với chế độ JSON bật lên là toàn bộ sự tích hợp.
  • Tên mô hình đã thay đổi gần đây — hầu hết các hướng dẫn hiện tại đã lỗi thời. Các mô hình hiện tại là deepseek-v4-flashdeepseek-v4-pro; các tên quen thuộc lâu dài deepseek-chatdeepseek-reasoner đã bị ngừng sử dụng kể từ ngày 24-Jul-2026.
  • Mô hình vẫn không thể lấy dữ liệu. Việc phân tích, phiên làm việc và những thách thức truy cập thuộc về một lớp lấy dữ liệu; hướng dẫn này chỉ sử dụng một POST cho mỗi trang qua API Trích xuất Toàn cầu Scrapeless.
  • Chưa có khóa DeepSeek? Yêu cầu giống nhau có thể thực hiện thông qua OpenRouter. Hướng dẫn này đã thực hiện trực tiếp trên deepseek/deepseek-v4-flash và hiển thị đầu ra đã được ghi lại.
  • Miễn phí để bắt đầu với phía lấy dữ liệu. Tạo khóa API Scrapeless của bạn tại app.scrapeless.com.

DeepSeek có thể trích xuất dữ liệu từ các trang web không?

DeepSeek đọc các trang; nó không lấy chúng. API nhận văn bản mà bạn đã lấy và trả về các trường mà bạn chỉ định — và vì giá trên mỗi token của nó nằm ở mức thấp nhất trên thị trường, nó là mô hình mà mọi người tìm đến khi việc trích xuất phải thực hiện trên nhiều trang. Việc lấy những trang đó, phân tích JavaScript của chúng và vượt qua các kiểm soát truy cập của chúng là một lớp riêng biệt mà không có điểm cuối hoàn thành trò chuyện nào cung cấp.

Nơi DeepSeek tỏa sáng là mã đánh dấu mà bạn ít muốn phân tích bằng tay nhất. HTML ngữ nghĩa thân thiện với các bộ chọn; các trang thực thường thì không. Mục tiêu trình diễn trong hướng dẫn này là một trang trích dẫn được thể hiện hoàn toàn dưới dạng bảng lồng nhau — không có lớp nào trên các ô dữ liệu, văn bản trích dẫn, tác giả và thẻ được xen kẽ theo hàng — kiểu cấu trúc mà logic bộ chọn biến thành số hàng mà chết trong lần thiết kế lại tiếp theo. Một mô hình ngôn ngữ không quan tâm: nó đọc bảng giống như một người.

Kế hoạch: lấy trang bảng-soup một lần với một lớp lấy dữ liệu có kiểm soát, sau đó để DeepSeek trả về JSON sạch. Nếu sự quan tâm của bạn là loại công cụ rộng hơn, giải thích về LLM scraperdanh sách xếp hạng các LLM scrapers sẽ giúp bạn định hình lĩnh vực này.

Cài đặt

Một SDK bao gồm cả đường dẫn gốc và đường dẫn tổng hợp, cộng thêm requests để lấy dữ liệu:

bash Copy
pip install "openai==2.34.0" requests

Cấu hình

bash Copy
export DEEPSEEK_API_KEY="sk-your_deepseek_key"
export SCRAPELESS_API_KEY="sk_your_scrapeless_key"

Lấy dữ liệu từ trang mà không ai muốn phân tích

Mục tiêu là một trang dựa trên bảng của một trang web trích dẫn công khai được xây dựng cho việc thực hành lấy dữ liệu. Một POST tới API Trích xuất Toàn cầu sẽ trả về nó với việc phân tích và giải mã được xử lý ở phía máy chủ:

python Copy
# fetch_tableful.py — lấy trang bảng-soup thông qua Scrapeless
import os

import requests

resp = requests.post(
    "https://api.scrapeless.com/api/v1/unlocker/request",
    headers={
        "Content-Type": "application/json",
        "x-api-token": os.environ["SCRAPELESS_API_KEY"],
    },
    json={
        "actor": "unlocker.webunlocker",
        "input": {"url": "https://quotes.toscrape.com/tableful/", "method": "GET"},
    },
    timeout=120,
)
resp.raise_for_status()
html = resp.json().get("data", "")
print(f"đã lấy {len(html):,} ký tự")
print("phần tử bảng:", html.count("<table"), "| hàng bảng:", html.count("<tr"))

with open("page.html", "w", encoding="utf-8") as f:
    f.write(html)

Chương trình chạy cho thấy một <table> và 22 hàng <tr> cho những gì về mặt khái niệm là mười bản ghi với thẻ — các hàng trích dẫn và hàng thẻ xen kẽ nhau, chính xác hình dạng mà các đặc tả bảng HTML cho phép và các tác giả bộ chọn lo ngại.

Triển khai cơ bản: DeepSeek như một công cụ trích xuất

Tích hợp là SDK OpenAI với hai giá trị cụ thể của DeepSeek: URL cơ sở và tên mô hình. Chế độ JSON (response_format={"type": "json_object"}) và temperature=0 làm cho đầu ra có thể phân tích và ổn định - các tham số được tài liệu hóa trong tài liệu tham khảo API của DeepSeek. Sử dụng các tên mô hình hiện tại: deepseek-v4-flash cho công việc trích xuất, deepseek-v4-pro khi bạn thực sự cần một mô hình mạnh hơn; các tên cũ deepseek-chatdeepseek-reasoner đã bị ngừng sử dụng kể từ ngày 24-Jul-2026.

Lưu ý: Khối này cần một DEEPSEEK_API_KEY có tín dụng - điều kiện tiên quyết mà hướng dẫn này không giả định. Phần tiếp theo chạy quá trình trích xuất giống hệt thông qua OpenRouter, với đầu ra được ghi lại.

python Copy
# extract_deepseek.py — trích xuất DeepSeek bản địa (cần DEEPSEEK_API_KEY)
import json
import os

from openai import OpenAI

client = OpenAI(
    base_url="https://api.deepseek.com",
    api_key=os.environ["DEEPSEEK_API_KEY"],
)

page_html = open("page.html", encoding="utf-8").read()

completion = client.chat.completions.create(
    model="deepseek-v4-flash",
    temperature=0,
    response_format={"type": "json_object"},
    messages=[
        {
            "role": "system",
            "content": 'Trích xuất mọi trích dẫn từ trang dựa trên bảng này. Chỉ trả lời bằng JSON: '
            '{"quotes":[{"text":str,"author":str,"tags":[str]}]}.',
        },
        {"role": "user", "content": page_html},
    ],
)

data = json.loads(completion.choices[0].message.content)
print(f"đã trích xuất {len(data['quotes'])} trích dẫn từ mã HTML của bảng")

Không cần tính toán hàng, không cần XPath trục anh em - sơ đồ xác định đầu ra và mô hình sẽ đọc.

Không có khóa DeepSeek? Chạy nó qua OpenRouter

Bởi vì cả hai giao diện đều có hình dạng OpenAI, biến thể tổng hợp khác nhau bởi hai chuỗi. Đây là phiên bản mà hướng dẫn này thực hiện thực tế, nhặt và trích xuất trong một tập lệnh tự chứa:

python Copy
# extract_openrouter.py — trích xuất giống nhau, thực hiện qua OpenRouter
import json
import os

import requests
from openai import OpenAI

resp = requests.post(
    "https://api.scrapeless.com/api/v1/unlocker/request",
    headers={
        "Content-Type": "application/json",
        "x-api-token": os.environ["SCRAPELESS_API_KEY"],
    },
    json={
        "actor": "unlocker.webunlocker",
        "input": {"url": "https://quotes.toscrape.com/tableful/", "method": "GET"},
    },
    timeout=120,
)
resp.raise_for_status()
page_html = resp.json().get("data", "")

client = OpenAI(
    base_url="https://openrouter.ai/api/v1",
    api_key=os.environ["OPENROUTER_API_KEY"],
)

completion = client.chat.completions.create(
    model="deepseek/deepseek-v4-flash",
    temperature=0,
    response_format={"type": "json_object"},
    messages=[
        {
            "role": "system",
            "content": 'Trích xuất mọi trích dẫn từ trang dựa trên bảng này. Chỉ trả lời bằng JSON: '
            '{"quotes":[{"text":str,"author":str,"tags":[str]}]}.',
        },
        {"role": "user", "content": page_html},
    ],
)

data = json.loads(completion.choices[0].message.content)
print(f"đã trích xuất {len(data['quotes'])} trích dẫn từ mã HTML của bảng")
print(json.dumps(data["quotes"][0], ensure_ascii=False))

Chạy trực tiếp đã lấy được tất cả 10 bản ghi từ bảng, bản đầu tiên:

text Copy
đã trích xuất 10 trích dẫn từ mã HTML của bảng
{"text": "Thế giới mà chúng ta đã tạo ra là một quá trình của tư duy của chúng ta. Nó không thể được thay đổi mà không thay đổi tư duy của chúng ta.", "author": "Albert Einstein", "tags": ["thay đổi", "suy nghĩ sâu sắc", "suy nghĩ", "thế giới"]}

Các thẻ đã được nhận lại dưới dạng mảng mặc dù trang hiển thị chúng ở hàng riêng biệt so với trích dẫn - mô hình đã liên kết mỗi hàng thẻ với hàng trích dẫn phía trên, điều này chính xác là liên kết mà một tập lệnh chọn lựa phải mã hóa bằng tay. Tổng số cuộc gọi: 3,397 tokens.

Nhận khóa API của bạn trên gói miễn phí: app.scrapeless.com

Kiểu mẫu nâng cao

  • Dành mô hình cho các trang xứng đáng. DeepSeek rẻ theo token, và một tập lệnh chọn lựa vẫn rẻ hơn: miễn phí. Chuyển các định dạng bố cục sạch sẽ và ổn định đến mã chọn lựa được tạo ra rồi xem xét và chi tiêu cuộc gọi mô hình cho những tài liệu phức tạp, dễ bị thay đổi, và những cái đuôi dài.
  • Nêu rõ ngữ nghĩa hàng khi bạn biết chúng. Trên trang này, lời nhắc không cần điều đó, nhưng trên các bảng phức tạp hơn, một câu - "mỗi bản ghi trải qua hai hàng: dữ liệu, sau đó là thẻ" - sẽ mua được độ chính xác rẻ hơn một mô hình lớn hơn.
  • Giữ một trang cho mỗi cuộc gọi và lặp lại trong Python. Ranh giới trang là ranh giới bản ghi; việc nhóm ở phía lời nhắc sẽ làm mờ chúng.
  • Theo dõi lịch trình ngừng sử dụng. Các tên mô hình đã khóa có tuổi. deepseek-chat đã phục vụ trong thời gian dài và sẽ ngừng vào 24-Jul-2026 - hãy đặt id mô hình trong cấu hình, không phải trong mười tập lệnh.
  • model_not_found hoặc tương tự trên điểm kết nối gốc. Bạn có thể đang gửi tên mô hình lỗi thời; chuyển sang deepseek-v4-flash hoặc deepseek-v4-pro.
  • Văn bản thay vì JSON. Chế độ JSON đã tắt - thiết lập response_format={"type": "json_object"} và giữ lại sơ đồ trong thông điệp hệ thống.
  • Kết hợp hồ sơ hoặc thẻ bị rơi vào trích dẫn sai. Thêm câu nghĩa hàng vào thông điệp hệ thống, và kiểm tra HTML thu được thực tế chứa các hàng mà bạn mong đợi, theo cách mà đoạn mã lấy dữ liệu đếm chúng.
  • Đầu ra thay đổi giữa các lần chạy. temperature=0. Việc trích xuất là một nhiệm vụ phiên âm, không phải là nhiệm vụ viết.

Kết luận

Lập luận của DeepSeek cho lớp trích xuất là toán học cộng với sự dung thứ: giá token thấp nhất trên thị trường và không có nỗi lo về mức giá đánh dấu trừng phạt logic lựa chọn. Bản demo bảng soup là bằng chứng - 10 hồ sơ với các mảng thẻ gắn kết đúng từ các hàng <tr> ẩn danh, cho 3,397 token. Điều mà mô hình không thể cung cấp là trang web chính nó, đã được dựng và có thể truy cập; mỗi POST ở phía máy chủ cho mỗi trang bao phủ phía đó, và hai lớp kết hợp tạo thành một trình thu thập chi phí gần như bằng không để chạy và ít phải duy trì khi đánh dấu thay đổi.

Sẵn sàng cung cấp cho DeepSeek các trang thực?

Lớp lấy dữ liệu ở đây là Universal Scraping API - các kế hoạch và khối lượng yêu cầu có trên trang giá, với mỗi tham số unlocker.webunlocker trong tài liệu phát triển. Tạo một khóa trên kế hoạch miễn phí tại app.scrapeless.com và cả hai đoạn mã chạy như đã viết.

Câu hỏi thường gặp

H: DeepSeek có thể tự thu thập dữ liệu từ các trang web không?

Không. API DeepSeek là một điểm kết nối mô hình ngôn ngữ: nó trích xuất từ văn bản mà bạn cung cấp và không thể gửi yêu cầu, dựng JavaScript, hoặc giữ phiên. Mỗi thiết lập thu thập dữ liệu hoạt động của DeepSeek đều kết hợp với một lớp lấy dữ liệu trả về nội dung trang trung thực.

H: Mô hình DeepSeek nào tôi nên sử dụng cho việc thu thập dữ liệu web?

deepseek-v4-flash cho việc trích xuất - lần chạy trực tiếp trong hướng dẫn này đã sử dụng nó và trả về tất cả 10 hồ sơ với gán thẻ đúng. Chỉ nên sử dụng deepseek-v4-pro khi đầu vào sạch vẫn sản xuất các trường sai. Tránh tên deepseek-chatdeepseek-reasoner đã lỗi thời trong mã mới.

H: Tại sao nên sử dụng DeepSeek thay vì một mô hình nổi tiếng hơn cho việc trích xuất?

Giá cả ở mức đủ như nhau. Việc trích xuất có giới hạn theo sơ đồ ở temperature=0 là một nhiệm vụ có giới hạn mà hầu hết các mô hình hiện tại đáp ứng; khi tất cả đều đáp ứng, mô hình pass rẻ nhất sẽ thắng. Lần chạy đã đo ở đây tốn 3,397 token trên một mô hình có giá dưới một xu cho mỗi triệu token đầu vào - với giá đó, việc trích xuất không còn là phần tốn kém của quy trình.

H: Khi nào một đoạn mã lựa chọn vẫn tốt hơn DeepSeek?

Khi bố cục sạch, ổn định và khối lượng cao. Một đoạn mã lựa chọn đã được xem xét không tốn chi phí mỗi trang mãi mãi; một lần gọi mô hình tốn token mỗi lần. Phân chia hoạt động: lựa chọn cho lõi ổn định của các mục tiêu của bạn, DeepSeek cho các đánh dấu rối bù và bố cục đang thay đổi.

H: Việc thu thập dữ liệu với DeepSeek có hợp pháp không?

Mô hình trích xuất không thay đổi quy tắc thu thập. Chỉ thu thập các trang công khai, tôn trọng điều khoản của trang web và các chỉ thị rô-bốt theo tiêu chuẩn hóa bởi Giao thức loại trừ Rô-bốt, giữ khối lượng ở mức hợp lý, và xử lý bất kỳ dữ liệu cá nhân nào theo luật pháp áp dụng - cùng với các điều khoản sử dụng của DeepSeek ở phía mô hình.

Tại Scrapless, chúng tôi chỉ truy cập dữ liệu có sẵn công khai trong khi tuân thủ nghiêm ngặt các luật, quy định và chính sách bảo mật trang web hiện hành. Nội dung trong blog này chỉ nhằm mục đích trình diễn và không liên quan đến bất kỳ hoạt động bất hợp pháp hoặc vi phạm nào. Chúng tôi không đảm bảo và từ chối mọi trách nhiệm đối với việc sử dụng thông tin từ blog này hoặc các liên kết của bên thứ ba. Trước khi tham gia vào bất kỳ hoạt động cạo nào, hãy tham khảo ý kiến ​​cố vấn pháp lý của bạn và xem xét các điều khoản dịch vụ của trang web mục tiêu hoặc có được các quyền cần thiết.

Bài viết phổ biến nhất

Danh mục