Cách thu thập thông tin hồ sơ TikTok với Python và Scrapeless
Senior Web Scraping Engineer
TL;DR:
- Một tìm kiếm hồ sơ bắt đầu với tên người dùng. Truyền
unique_idmà không có@đếnscraper.tiktok.user.detail. - Phản hồi chứa các trường danh tính và tài khoản công khai. Nó có thể bao gồm
account_id,sec_uid, biệt danh, URL hồ sơ, tiểu sử, avatar, thống kê, trường địa phương, và các cờ trạng thái tài khoản. sec_uidmở khóa bước tiếp theo. Lưu nó khi một quy trình làm việc yêu cầu các bài đăng công khai của tài khoản.- Các định danh nên giữ nguyên là chuỗi. Các ID dạng số lớn có thể mất độ chính xác khi các hệ thống hạ nguồn ép chúng thành số.
- Dữ liệu hồ sơ không phải là dữ liệu khán giả. Diễn viên không tiết lộ danh sách người theo dõi hoặc nhân khẩu học khán giả.
- Miễn phí để bắt đầu. Các tài khoản Scrapeless mới bao gồm tín dụng miễn phí qua Bảng điều khiển Scrapeless.
Giới thiệu: giải quyết một tài khoản công khai thành một bản ghi ổn định
Một tên người dùng rất tiện dụng cho việc nhập, nhưng nó chỉ là một phần trong bản ghi người sáng tạo hữu ích. Một công việc nghiên cứu hoặc giám sát cũng cần một định danh tài khoản ổn định, sec_uid yêu cầu bởi diễn viên bài viết, thống kê công khai, và đủ ngữ cảnh để phân biệt các tài khoản có tên hiển thị tương tự.
Bộ công cụ thu thập hồ sơ TikTok Scrapeless đóng gói tìm kiếm đó dưới dạng một yêu cầu JSON. Python có thể xác thực phản hồi, chọn các trường cần thiết, và lưu một bản ghi nhỏ mà không cần phân tích HTML đã được hiển thị. Để biết thêm về bản đồ diễn viên rộng hơn, xem hướng dẫn API thu thập Scrapeless.
Những gì Diễn viên Hồ sơ Trả về
scraper.tiktok.user.detail chấp nhận unique_id, tên người dùng hiển thị mà không có @ ở đầu. Một phản hồi thành công có thể bao gồm:
account_id,unique_id, vàsec_uid- biệt danh, URL hồ sơ, tiểu sử và avatar
- thống kê người theo dõi, đang theo dõi, bạn bè, thích, video và video đã thích
- thời gian tạo tài khoản, ngôn ngữ và quốc gia
- cờ xác minh, quyền riêng tư, và người bán
Các trường có thể vắng mặt hoặc trống. Một cờ tài khoản riêng tư là trạng thái tài khoản, không phải quyền truy cập vào nội dung riêng tư. Hướng dẫn này chỉ sử dụng phản hồi hồ sơ công khai đã được tài liệu hóa.
Tại sao Sử dụng API thu thập Scrapeless
Scrapeless chạy diễn viên hồ sơ TikTok phía sau một điểm cuối HTTP duy nhất và trả về JSON có cấu trúc. Điều này mang lại cho các công việc Python một phong bì yêu cầu nhất quán và loại bỏ mã chọn trang khỏi ứng dụng.
Bề mặt API được tài liệu hóa trong tham chiếu chi tiết người dùng TikTok. Scrapeless nhóm diễn viên dưới API thu thập; kiểm tra giá hiện tại trước khi lên lịch thu thập sản xuất.
Các yêu cầu tiên quyết
- Python với thư viện chuẩn
- Một tài khoản Scrapeless và mã API từ Bảng điều khiển Scrapeless
- Một tên người dùng TikTok công khai liên quan đến dự án
- Một danh sách trường xác định, mục đích và thời gian lưu giữ
Ví dụ yêu cầu một mã thông báo đang hoạt động trong SCRAPELESS_API_KEY. Cung cấp tên người dùng thông qua TIKTOK_USERNAME mà không có @.
Yêu cầu Hồ sơ TikTok trong Python
Mã sử dụng các mô-đun HTTP và JSON tích hợp sẵn của Python. Tài liệu urllib.request bao trùm đối tượng yêu cầu, trong khi Tài liệu mô-đun JSON định nghĩa bộ mã hóa và giải mã được sử dụng bên dưới.
python
import json
import os
from urllib.error import HTTPError
from urllib.request import Request, urlopen
ENDPOINT = "https://api.scrapeless.com/api/v1/scraper/request"
def get_profile(unique_id):
payload = {
"actor": "scraper.tiktok.user.detail",
"input": {"unique_id": unique_id.lstrip("@")},
}
request = Request(
ENDPOINT,
data=json.dumps(payload).encode(),
headers={
"x-api-token": os.environ["SCRAPELESS_API_KEY"],
"content-type": "application/json",
},
method="POST",
)
try:
with urlopen(request, timeout=60) as response:
return json.load(response)
except HTTPError as exc:
detail = exc.read().decode("utf-8", errors="replace")
raise RuntimeError(f"profile request failed: {exc.code} {detail}") from exc
profile = get_profile(os.environ["TIKTOK_USERNAME"])
normalized = {
"account_id": str(profile.get("account_id", "")),
"unique_id": profile.get("unique_id"),
"sec_uid": profile.get("sec_uid"),
"nickname": profile.get("nickname"),
"profile_url": profile.get("profile_url"),
"bio": profile.get("bio"),
"statistics": profile.get("statistics") or {},
"language": profile.get("language"),
"country": profile.get("country"),
"is_verified": profile.get("is_verified"),
"is_private": profile.get("is_private"),
"is_seller": profile.get("is_seller"),
}
print(json.dumps(normalized, ensure_ascii=False, indent=2))
Bắt đầu Thu thập với Scrapeless
Khởi động quy trình thu thập dữ liệu web và tự động hóa của bạn với Scrapeless!
Đăng ký ngay hôm nay và nhận $5 tín dụng miễn phí — không yêu cầu thẻ tín dụng.Nhận tín dụng miễn phí của bạn ngay bây giờ tại Bảng điều khiển Scrapeless.
Bản đồ Phản hồi đến Mô hình Dữ liệu của Bạn
Giữ ba trường danh tính
unique_id là tên tài khoản có thể đọc được. account_id là một định danh tài khoản. sec_uid là đầu vào cần thiết bởi scraper.tiktok.user.work. Giữ lại cả ba thay vì chọn một khóa chung cho tất cả.
Bảo tồn đối tượng thống kê
Các số liệu công khai là các giá trị theo thời gian. Một bảng phân tích đã chuẩn hóa có thể trích xuất các số liệu đã chọn, nhưng đối tượng thống kê thô nên vẫn có sẵn để một thay đổi lược đồ không xóa ngữ cảnh nguồn.
Đối xử với các cờ tài khoản như thể có thể null
Xác minh, quyền riêng tư và cờ người bán là hữu ích khi có mặt. Nếu một trường vắng mặt, hãy lưu trữ là không xác định thay vì sai. Quy tắc tương tự áp dụng cho ngôn ngữ, quốc gia, tiểu sử và avatar.
Đính kèm dấu thời gian bộ sưu tập của riêng bạn
Phản hồi hồ sơ mô tả tài khoản khi diễn viên hoạt động. Thêm một dấu thời gian quan sát UTC trong ứng dụng gọi và giữ nó tách biệt với bất kỳ thời gian tạo tài khoản nào được trả về bởi TikTok.
Lấy sec_uid Từ Tên Người Dùng
Yêu cầu hồ sơ là cầu nối đã được tài liệu hóa từ tên người dùng đến bộ sưu tập bài đăng. Sau khi lưu sec_uid, một yêu cầu thứ hai có thể sử dụng scraper.tiktok.user.work với cursor và count. Tham chiếu diễn viên công việc người dùng mô tả những đầu vào đó.
Tránh suy diễn sec_uid từ một URL hồ sơ hoặc đối xử với nó như thể có thể thay thế cho tên người dùng. Sử dụng trường đã trả về. Nếu nó vắng mặt, hãy giữ bản ghi hồ sơ và đánh dấu bộ sưu tập bài đăng là không có sẵn cho quan sát đó.
Xác thực Trước Khi Xuất
Một tập hợp nhỏ các kiểm tra ngăn chặn các hàng gây hiểu lầm:
- Xác nhận
unique_idkhớp với tài khoản dự kiến sau khi chuẩn hóa chữ hoa và tiền tố@. - Giữ
account_iddưới dạng chuỗi. - Chấp nhận giá trị tiểu sử, ngôn ngữ hoặc avatar trống.
- Yêu cầu
sec_uidchỉ khi công việc tiếp theo cần bài đăng. - Ghi lại trạng thái HTTP và một thân lỗi đã được biên soạn khi yêu cầu thất bại.
Điểm cuối sử dụng ngữ nghĩa HTTP bình thường; RFC 9110 là tài liệu tham khảo chính cho ý nghĩa mã trạng thái. Nhật ký ứng dụng không bao giờ nên bao gồm mã thông báo API.
Xử Lý Dữ Liệu Hồ Sơ Công Khai Một Cách Có Trách Nhiệm
Thu thập bộ trường nhỏ nhất mà trả lời câu hỏi nghiên cứu. Hạn chế quyền truy cập vào các bản ghi hồ sơ đã lưu trữ, xóa dữ liệu khi thời gian giữ lại kết thúc, và tránh sử dụng các số liệu công khai để suy luận các đặc điểm nhạy cảm. Khung Quyền Riêng Tư NIST cung cấp một từ vựng thực tiễn để ánh xạ xử lý dữ liệu với rủi ro về quyền riêng tư.
Phản hồi hồ sơ hỗ trợ nghiên cứu cấp tài khoản. Nó không cung cấp danh tính của những người theo dõi, nhân khẩu học của khán giả, bài đăng riêng tư hoặc quyền cho việc lập hồ sơ không liên quan.
Kết Luận: sử dụng hồ sơ như lớp danh tính
Một trình quét hồ sơ TikTok nên tạo ra một bản ghi tài khoản ổn định, tối thiểu từ tên người dùng. Lưu account_id, unique_id, và sec_uid, bảo tồn các trường có thể null, đánh dấu thời gian quan sát, và chuyển sec_uid sang phía trước chỉ khi một quy trình bài đăng cần nó.
Sẵn Sàng Xây Dựng Bộ Dữ Liệu Hồ Sơ TikTok Của Bạn?
Tham gia Scrapeless Discord hoặc cộng đồng Telegram để thảo luận về việc triển khai. Tạo một tài khoản trong Bảng Điều Khiển Scrapeless khi danh sách trường và chính sách lưu trữ đã sẵn sàng.
Câu Hỏi Thường Gặp
Q: Trình quét hồ sơ TikTok cần đầu vào gì?
Nó cần unique_id, đó là tên người dùng công khai mà không có @.
Q: sec_uid được sử dụng cho mục đích gì?
sec_uid là mã định danh tài khoản cần thiết bởi diễn viên công việc người dùng đã được tài liệu hóa, người trả về các bài đăng công khai.
Q: Diễn viên hồ sơ có thể trả về nhân khẩu học của những người theo dõi không?
Không. Nó trả về các trường hồ sơ công khai và thống kê tài khoản, không phải nhân khẩu học của khán giả hay danh sách những người theo dõi.
Q: Có nên lưu trữ ID tài khoản TikTok dưới dạng số không?
Không. Lưu trữ các mã nhìn giống như số dưới dạng chuỗi để bảo tồn mọi chữ số trong cơ sở dữ liệu và công cụ phân tích.
Q: Việc quét một hồ sơ TikTok công khai có hợp pháp không?
Tính hợp pháp phụ thuộc vào khu vực pháp lý, mục đích, phương thức truy cập, dữ liệu và các điều khoản áp dụng. Sử dụng chỉ các trường công khai, giảm thiểu thu thập, và nhận tư vấn pháp lý cho việc sử dụng đã được lên kế hoạch.
Q: Quy trình có cần một proxy hoặc bộ phân tích DOM không?
Không có bộ phân tích DOM nào xuất hiện trong mã ứng dụng vì diễn viên quản lý trả về dữ liệu có cấu trúc. Scrapeless xử lý bề mặt thu thập cơ bản.
Q: Có thể chạy điều này mà không có một đại lý AI không?
Có. Ví dụ Python là một khách hàng HTTP trực tiếp và hoạt động độc lập với một đại lý.
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.



