Bài viết này khám phá phương pháp scraping Pinterest bằng Python và Playwright, một thư viện tự động hóa mạnh mẽ. Pinterest, nổi tiếng với nội dung hình ảnh phong phú, là một mảnh đất màu mỡ cho các sáng kiến phân tích dữ liệu hoặc tự động hóa. Cụ thể, việc trích xuất URL hình ảnh từ kết quả tìm kiếm có thể là yếu tố quan trọng cho các nghiên cứu hoặc dự án thương mại.
Playwright hỗ trợ tự động hóa các phiên tương tác trên nhiều trình duyệt. Nó có những tính năng như chặn các yêu cầu mạng, cho phép trích xuất dữ liệu trực tiếp từ lưu lượng truy cập. Hơn nữa, khả năng hoạt động trong chế độ không hiển thị giúp tăng cường hiệu quả scraping và khả năng mở rộng. Việc sử dụng proxy, mặc dù là tùy chọn, được khuyến nghị để đảm bảo ẩn danh và giúp tránh các khối tiềm ẩn, từ đó củng cố Playwright là công cụ ưu tiên để thu thập nội dung hình ảnh từ Pinterest.
Trước khi bắt đầu, bạn cần cài đặt Playwright trong môi trường Python của mình. Bạn có thể cài đặt nó bằng pip:
pip install playwright
Sau khi được cài đặt, bạn sẽ cần cài đặt các nhị phân của trình duyệt:
playwright install
Bây giờ, hãy xem một đoạn mã cơ bản để scraping các URL hình ảnh từ Pinterest.
Đoạn mã, phiên bản đầy đủ của nó được trình bày dưới đây, bao gồm các yếu tố sau:
Hàm chính xây dựng một URL truy vấn tìm kiếm Pinterest dựa trên đầu vào của người dùng, ví dụ: https://in.pinterest.com/search/pins/?q=halloween%20decor, sau đó truyền nó vào hàm capture_images_from_pinterest.
Trang Playwright lắng nghe các phản hồi mạng bằng cách sử dụng page.on('response', ...).
Hàm handle_response lọc các phản hồi mạng, đảm bảo rằng chỉ các phản hồi có loại tài nguyên là hình ảnh và URL kết thúc bằng .jpg được ghi lại.
Sau khi thu thập các URL hình ảnh, chúng tôi lưu chúng vào một tệp CSV có tên pinterest_images.csv, giúp việc xuất và phân tích dữ liệu scraped trở nên dễ dàng.
Dưới đây là mã Python scraping kết quả tìm kiếm Pinterest và trích xuất tất cả các URL hình ảnh:
import asyncio
from playwright.async_api import async_playwright
async def capture_images_from_pinterest(url):
async with async_playwright() as p:
browser = await p.chromium.launch(headless=True)
page = await browser.new_page()
# Lưu trữ URL hình ảnh với kết thúc '.jpg'
image_urls = []
# Chức năng chặn và xử lý các phản hồi mạng
page.on('response', lambda response: handle_response(response, image_urls))
# Điều hướng đến URL
await page.goto(url)
# Chờ hoạt động mạng để giải quyết (điều chỉnh nếu cần)
await page.wait_for_timeout(10000)
# Đóng trình duyệt
await browser.close()
return image_urls
# Chức năng xử lý để kiểm tra URL .jpg hình ảnh
def handle_response(response, image_urls):
if response.request.resource_type == 'image':
url = response.url
if url.endswith('.jpg'):
image_urls.append(url)
# Chức năng chính để chạy tác vụ không đồng bộ
async def main(query):
url = f"https://in.pinterest.com/search/pins/?q={query}"
images = await capture_images_from_pinterest(url)
# Lưu hình ảnh vào tệp CSV
with open('pinterest_images.csv', 'w') as file:
for img_url in images:
file.write(f"{img_url}\n")
print(f"Saved {len(images)} image URLs to pinterest_images.csv")
# Chạy chức năng chính Async
query = 'halloween decor'
asyncio.run(main(query))
Việc scraping Pinterest có thể gây ra giới hạn tốc độ hoặc thậm chí bị cấm nếu bạn thực hiện quá nhiều yêu cầu từ cùng một địa chỉ IP. Proxy giúp giảm thiểu điều này bằng cách chuyển hướng các yêu cầu của bạn qua các địa chỉ IP khác nhau, khiến nó trông như thể nhiều người dùng đang duyệt Pinterest.
Tại sao nên sử dụng proxy:
Bạn có thể dễ dàng cài đặt proxy với Playwright bằng cách sử dụng tham số proxy trong phương thức launch. Trong ví dụ này, thay thế “http://your-proxy-address:port” bằng địa chỉ máy chủ proxy của bạn, số cổng và thông tin xác thực proxy.
async def capture_images_from_pinterest(url):
async with async_playwright() as p:
# Thêm proxy tại đây
browser = await p.chromium.launch(headless=True, proxy={"server": "http://your-proxy-address:port", "username": "username", "password": "password"})
page = await browser.new_page()
Do đó, việc tích hợp Playwright với proxy nâng cao hiệu quả của tự động hóa việc scraping. Sự kết hợp này không chỉ giảm thiểu các rủi ro từ các cơ chế chống bot mà còn cải thiện hiệu suất tổng thể của quá trình thu thập dữ liệu.
Có một số thách thức mà người dùng có thể gặp phải khi sử dụng Playwright để scrape dữ liệu từ Pinterest:
Việc sử dụng Playwright với proxy và chế độ headless có thể giúp giảm thiểu những thách thức này, giảm rủi ro bị chặn và cải thiện hiệu quả của việc trích xuất dữ liệu.
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
Bình luận: 0