Cách sử dụng curl_cffi để trích xuất dữ liệu web

Anh Tuan
Data Science Expert
17-Sep-2024
curl_cffi là một thư viện Python cung cấp các liên kết hiệu quả, cấp thấp tới thư viện libcurl bằng cách sử dụng CFFI (C Foreign Function Interface). Điều này cho phép bạn thực hiện các yêu cầu HTTP với hiệu năng cao và khả năng kiểm soát chi tiết, tương tự như công cụ dòng lệnh curl nhưng trong Python. Nó đặc biệt hữu ích cho các tác vụ thu thập dữ liệu web đòi hỏi tốc độ và cấu hình nâng cao.
Các tính năng:
- Hiệu năng cao: Tận dụng tốc độ của
libcurlđể thực hiện các yêu cầu HTTP nhanh chóng. - An toàn luồng: An toàn khi sử dụng trong các ứng dụng đa luồng.
- Các tính năng nâng cao: Hỗ trợ proxy, cấu hình SSL/TLS, tiêu đề tùy chỉnh, và hơn thế nữa.
- Kiểm soát cấp thấp: Cung cấp khả năng kiểm soát chi tiết đối với quá trình yêu cầu và phản hồi.
Điều kiện tiên quyết
Trước khi bạn bắt đầu sử dụng curl_cffi, hãy đảm bảo rằng bạn đã cài đặt những thứ sau:
- Python 3.6 trở lên
- libcurl được cài đặt trên hệ thống của bạn
- pip để cài đặt các gói Python
Trên các hệ thống Ubuntu/Debian, bạn có thể cần cài đặt các tiêu đề phát triển libcurl:
bash
sudo apt-get install libcurl4-openssl-dev
Bắt đầu với curl_cffi
Cài đặt
Cài đặt curl_cffi bằng pip:
bash
pip install curl_cffi
Ví dụ cơ bản: Thực hiện yêu cầu GET
Đây là một ví dụ cơ bản về cách sử dụng curl_cffi để thực hiện yêu cầu GET:
python
from curl_cffi import requests
# Thực hiện yêu cầu GET
response = requests.get('https://httpbin.org/get')
# Kiểm tra mã trạng thái
print(f'Mã trạng thái: {response.status_code}')
# In nội dung phản hồi
print('Nội dung phản hồi:', response.text)
Ví dụ thu thập dữ liệu web: Thu thập trích dẫn từ một trang web
Hãy thu thập dữ liệu từ một trang web để trích xuất thông tin. Chúng ta sẽ sử dụng Quotes to Scrape để lấy tất cả các trích dẫn cùng với tác giả của chúng.
python
from curl_cffi import requests
from bs4 import BeautifulSoup
# URL để thu thập dữ liệu
url = 'http://quotes.toscrape.com/'
# Thực hiện yêu cầu GET
response = requests.get(url)
# Phân tích cú pháp nội dung HTML bằng BeautifulSoup
soup = BeautifulSoup(response.content, 'html.parser')
# Tìm tất cả các phần tử trích dẫn
quotes = soup.find_all('div', class_='quote')
# Trích xuất và hiển thị các trích dẫn và tác giả
for quote in quotes:
text = quote.find('span', class_='text').get_text()
author = quote.find('small', class_='author').get_text()
print(f'{text} — {author}')
Kết quả:
“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.” — Albert Einstein
“It is our choices, Harry, that show what we truly are, far more than our abilities.” — J.K. Rowling
... (các trích dẫn khác)
Xử lý Captcha với CapSolver và curl_cffi
Trong phần này, chúng ta sẽ tìm hiểu cách tích hợp CapSolver với curl_cffi để bỏ qua captcha. CapSolver là một dịch vụ bên ngoài giúp giải quyết nhiều loại captcha khác nhau, bao gồm cả ReCaptcha V2, thường được sử dụng trên các trang web.
Chúng ta sẽ trình bày cách giải quyết ReCaptcha V2 bằng CapSolver và sau đó thu thập dữ liệu của một trang yêu cầu giải quyết captcha trước.
Ví dụ: Giải quyết ReCaptcha V2 với CapSolver và curl_cffi
python
import os
import capsolver
from curl_cffi import requests
# Cân nhắc sử dụng biến môi trường cho thông tin nhạy cảm
capsolver.api_key = os.getenv("CAPSOLVER_API_KEY", "Your CapSolver API Key")
PAGE_URL = os.getenv("PAGE_URL", "https://example.com") # URL của trang có captcha
PAGE_KEY = os.getenv("PAGE_SITE_KEY", "SITE_KEY") # Site key cho captcha
def solve_recaptcha_v2(url, site_key):
solution = capsolver.solve({
"type": "ReCaptchaV2TaskProxyless",
"websiteURL": url,
"websiteKey": site_key,
"proxy": PROXY
})
return solution['solution']['gRecaptchaResponse']
def main():
print("Đang giải quyết reCaptcha V2...")
captcha_solution = solve_recaptcha_v2(PAGE_URL, PAGE_KEY)
print("Captcha đã được giải quyết!")
if __name__ == "__main__":
main()
Lưu ý: Thay thế PAGE_URL bằng URL của trang chứa captcha và PAGE_SITE_KEY bằng site key của captcha. Bạn có thể tìm thấy site key trong mã nguồn HTML của trang, thường nằm trong <div> chứa widget captcha.
Xử lý Proxy với curl_cffi
Nếu bạn cần định tuyến các yêu cầu của mình thông qua một proxy, curl_cffi giúp bạn thực hiện điều đó một cách đơn giản:
python
from curl_cffi import requests
# Định nghĩa cài đặt proxy
proxies = {
'http': 'http://username:password@proxyserver:port',
'https': 'https://username:password@proxyserver:port',
}
# Thực hiện yêu cầu GET bằng proxy
response = requests.get('https://httpbin.org/ip', proxies=proxies)
# In nội dung phản hồi
print('Nội dung phản hồi:', response.text)
Xử lý Cookie với curl_cffi
Bạn có thể quản lý cookie bằng CookieJar từ mô-đun http.cookiejar của Python:
python
from curl_cffi import requests
from http.cookiejar import CookieJar
# Tạo một instance CookieJar
cookie_jar = CookieJar()
# Tạo một session với cookie jar
session = requests.Session()
session.cookies = cookie_jar
# Thực hiện yêu cầu GET
response = session.get('https://httpbin.org/cookies/set?name=value')
# Hiển thị các cookie
for cookie in session.cookies:
print(f'{cookie.name}: {cookie.value}')
Sử dụng nâng cao: Tiêu đề tùy chỉnh và yêu cầu POST
Bạn có thể gửi tiêu đề tùy chỉnh và thực hiện yêu cầu POST với curl_cffi:
python
from curl_cffi import requests
# Định nghĩa tiêu đề tùy chỉnh
headers = {
'User-Agent': 'Mozilla/5.0 (compatible)',
'Accept-Language': 'en-US,en;q=0.5',
}
# Dữ liệu để gửi trong yêu cầu POST
data = {
'username': 'testuser',
'password': 'testpass',
}
# Thực hiện yêu cầu POST
response = requests.post('https://httpbin.org/post', headers=headers, data=data)
# In phản hồi JSON
print('Phản hồi JSON:', response.json())
Mã thưởng
Nhận Mã thưởng của bạn cho các giải pháp captcha hàng đầu tại CapSolver: scrape. Sau khi đổi mã, bạn sẽ nhận được thêm 5% tiền thưởng sau mỗi lần nạp tiền, không giới hạn số lần.
Kết luận
Với curl_cffi, bạn có thể thực hiện hiệu quả các tác vụ thu thập dữ liệu web trong khi vẫn có khả năng kiểm soát chi tiết các yêu cầu HTTP của mình. Việc tích hợp nó với CapSolver cho phép bạn bỏ qua các captcha như ReCaptcha V2, cho phép truy cập vào nội dung mà nếu không thì rất khó để thu thập.
Cảm thấy tự do để mở rộng các ví dụ này cho phù hợp với nhu cầu thu thập dữ liệu cụ thể của bạn. Luôn nhớ tôn trọng các điều khoản dịch vụ của các trang web bạn thu thập dữ liệu và tuân thủ các hướng dẫn pháp lý.
Chúc bạn thu thập dữ liệu vui vẻ!
Tuyên bố Tuân thủ: Thông tin được cung cấp trên blog này chỉ mang tính chất tham khảo. CapSolver cam kết tuân thủ tất cả các luật và quy định hiện hành. Việc sử dụng mạng lưới CapSolver cho các hoạt động bất hợp pháp, gian lận hoặc lạm dụng là hoàn toàn bị cấm và sẽ bị điều tra. Các giải pháp giải captcha của chúng tôi nâng cao trải nghiệm người dùng trong khi đảm bảo tuân thủ 100% trong việc giúp giải quyết các khó khăn về captcha trong quá trình thu thập dữ liệu công khai. Chúng tôi khuyến khích việc sử dụng dịch vụ của chúng tôi một cách có trách nhiệm. Để biết thêm thông tin, vui lòng truy cập Điều khoản Dịch vụ và Chính sách Quyền riêng tư.
Thêm

Công cụ Ghi dữ liệu Nhanh: Cách nhanh chóng trích xuất dữ liệu web mà không cần code
Khám phá các công cụ trích xuất dữ liệu tức thì tốt nhất cho năm 2026. Học các cách nhanh chóng để trích xuất dữ liệu từ web mà không cần mã nguồn bằng cách sử dụng các tiện ích mở rộng hàng đầu và API để trích xuất tự động.

Nikolai Smirnov
28-Jan-2026

Thu thập dữ liệu từ web các bài báo tin tức bằng Python (Hướng dẫn 2026)
Nắm vững trích xuất dữ liệu từ web bài báo tin tức bằng Python vào năm 2026. Học cách giải reCAPTCHA v2/v3 bằng CapSolver và xây dựng các pipeline dữ liệu có thể mở rộng.

Anh Tuan
28-Jan-2026

Cách sử dụng trình duyệt so với Browserbase: Công cụ tự động hóa trình duyệt nào tốt hơn cho các tác nhân AI?
So sánh Browser Use với Browserbase cho tự động hóa bằng trợ lý AI. Khám phá tính năng, giá cả và cách giải CAPTCHAs bằng CapSolver để có luồng công việc mượt mà.

Aloísio Vítor
27-Jan-2026

Cấm IP vào năm 2026: Cách chúng hoạt động và các cách thực tế để vượt qua chúng
Học cách lách chặn IP vào năm 2026 với hướng dẫn toàn diện của chúng tôi. Khám phá các kỹ thuật chặn IP hiện đại và giải pháp thực tế như proxy nhà ở và trình giải CAPTCHA.

Aloísio Vítor
26-Jan-2026

Cách giải Captcha trong Maxun với tích hợp CapSolver
Một hướng dẫn thực tế về việc tích hợp CapSolver với Maxun cho quét web thực tế. Học cách xử lý reCAPTCHA, Cloudflare Turnstile và các trang web được bảo vệ bằng CAPTCHA bằng cách sử dụng quy trình xác thực trước và luồng công việc robot.

Anh Tuan
21-Jan-2026

Cách giải Captcha trong Browser4 với tích hợp CapSolver
Tự động hóa Browser4 tỷ lệ xử lý cao kết hợp với CapSolver để xử lý các thách thức CAPTCHA trong việc trích xuất dữ liệu web quy mô lớn.

Anh Tuan
21-Jan-2026

