Skip to content

rinnguyen0905/web-crawler-3m

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

Hướng Dẫn Crawl Dữ Liệu Từ Trang Web 3M Việt Nam

Giới Thiệu

Dự án này cung cấp script Python để crawl dữ liệu sản phẩm từ trang web 3M Việt Nam (https://www.3m.com.vn). Script sẽ thu thập thông tin sản phẩm từ các danh mục khác nhau, bao gồm tên sản phẩm, mã sản phẩm, mô tả, hình ảnh, và nhiều thông tin khác.

Yêu Cầu Hệ Thống

  • Python: Phiên bản 3.8 trở lên (khuyến nghị Python 3.13).
  • Hệ điều hành: Windows, macOS, hoặc Linux.
  • Kết nối internet: Để truy cập trang web 3M.

Bước 1: Thiết Lập Python

1.1 Cài Đặt Python

  1. Truy cập trang web chính thức của Python: https://www.python.org/downloads/
  2. Tải xuống phiên bản Python mới nhất cho hệ điều hành của bạn.
  3. Chạy file cài đặt và làm theo hướng dẫn.
  4. Kiểm tra cài đặt bằng cách mở Command Prompt (Windows) hoặc Terminal (macOS/Linux) và chạy:
    python --version
    
    Hoặc:
    python3 --version
    

1.2 Tạo Môi Trường Ảo (Khuyến Nghị)

Môi trường ảo giúp quản lý các thư viện riêng biệt cho từng dự án.

  1. Mở Command Prompt/Terminal.
  2. Điều hướng đến thư mục dự án:
    cd d:\05_Crawl_Web3m
    
  3. Tạo môi trường ảo:
    python -m venv venv
    
  4. Kích hoạt môi trường ảo:
    • Windows:
      venv\Scripts\activate
      
    • macOS/Linux:
      source venv/bin/activate
      
  5. Bạn sẽ thấy (venv) xuất hiện ở đầu dòng lệnh, nghĩa là môi trường ảo đã được kích hoạt.

Bước 2: Cài Đặt Thư Viện

Script sử dụng các thư viện sau:

  • requests: Để gửi yêu cầu HTTP đến trang web.
  • beautifulsoup4: Để phân tích HTML và trích xuất dữ liệu.

2.1 Cài Đặt Thư Viện

Sau khi kích hoạt môi trường ảo, chạy các lệnh sau:

pip install requests beautifulsoup4

2.2 Kiểm Tra Cài Đặt

Chạy Python và nhập:

import requests
from bs4 import BeautifulSoup
print("Thư viện đã cài đặt thành công!")

Bước 3: Hiểu Về HTML và Cách Script Phân Tích

3.1 Cơ Bản Về HTML

HTML (HyperText Markup Language) là ngôn ngữ đánh dấu dùng để tạo cấu trúc trang web. Trang web 3M sử dụng HTML để hiển thị danh sách sản phẩm.

Ví dụ cấu trúc HTML đơn giản:

<div class="product-item">
    <a href="/3M/vi_VN/p/d/v000057363/">Tên Sản Phẩm</a>
    <img src="https://example.com/image.jpg" alt="Hình ảnh">
    <p>Mã sản phẩm: 7000001898</p>
</div>

3.2 Cách Script Phân Tích HTML

Script sử dụng BeautifulSoup để:

  1. Tải HTML: Sử dụng requests.get() để tải nội dung trang web.
  2. Phân tích: Tạo đối tượng BeautifulSoup từ HTML.
  3. Tìm phần tử: Sử dụng các phương thức như find(), find_all() để tìm thẻ HTML cụ thể.
    • Ví dụ: soup.find_all('a', href=re.compile(r'/p/d/')) tìm tất cả liên kết sản phẩm.
  4. Trích xuất dữ liệu: Lấy text, thuộc tính (như href, src) từ các thẻ.

3.3 Ví Dụ Trong Script

# Tải HTML
response = requests.get(url, headers=HEADERS)
soup = BeautifulSoup(response.content, 'html.parser')

# Tìm sản phẩm
product_links = soup.find_all('a', href=re.compile(r'/p/d/'))
for link in product_links:
    name = link.get_text(strip=True)
    url = 'https://www.3m.com.vn' + link['href']
    print(f"Sản phẩm: {name}, URL: {url}")

Bước 4: Hiểu Code Trong Script

4.1 Cấu Trúc Script

Script chính (crawl_3m_all.py) bao gồm các hàm chính:

  • get_soup(url): Tải và phân tích HTML từ URL.
  • extract_product_info(product_div): Trích xuất thông tin từ một thẻ sản phẩm.
  • crawl_category(url, category_name): Crawl tất cả sản phẩm trong một danh mục, xử lý phân trang.
  • crawl_main_page(): Crawl trang chính để lấy danh sách danh mục.
  • crawl_detailed_product(url): Crawl chi tiết một sản phẩm.
  • main(): Hàm chính điều phối toàn bộ quá trình.

4.2 Luồng Thực Thi

  1. Bước 1: Crawl trang chính để lấy danh sách danh mục.
  2. Bước 2: Với mỗi danh mục, crawl danh sách sản phẩm (xử lý phân trang nếu có).
  3. Bước 3: Với mỗi sản phẩm, crawl thông tin chi tiết.
  4. Bước 4: Xuất dữ liệu ra file CSV.

4.3 Các Biến Quan Trọng

  • HEADERS: Giả lập trình duyệt để tránh bị chặn.
  • MAIN_URL: URL trang chính của 3M Việt Nam.
  • SUBCATEGORIES: Danh sách danh mục (nếu cần crawl thủ công).

4.4 Xử Lý Lỗi

Script xử lý lỗi như:

  • Lỗi kết nối: Sử dụng try-except với requests.RequestException.
  • Lỗi ghi file: Kiểm tra quyền ghi và tạo file backup nếu cần.

Bước 5: Chạy Script và Hiểu Kết Quả

5.1 Chạy Script

  1. Đảm bảo môi trường ảo đã kích hoạt.
  2. Chạy script:
    python crawl_3m_all.py
    
  3. Script sẽ hiển thị tiến trình:
    • "Crawling main page to get categories..."
    • "Crawling category: [Tên danh mục]..."
    • "Crawling detailed information for products..."
    • "Đã crawl chi tiết X/Y sản phẩm"

5.2 Kết Quả

Script tạo file 3m_all_products.csv với các cột:

  • name: Tên sản phẩm.
  • url: Liên kết chi tiết sản phẩm.
  • image: URL hình ảnh sản phẩm.
  • code_3m: Mã sản phẩm 3M.
  • old_code: Mã sản phẩm cũ.
  • upc: Mã UPC.
  • category: Danh mục sản phẩm.
  • description: Mô tả sản phẩm.
  • specifications: Thông số kỹ thuật.
  • price: Giá (nếu có).
  • meta_description: Mô tả từ meta tag.

5.3 Mở và Phân Tích File CSV

  1. Mở file 3m_all_products.csv bằng Excel, Google Sheets, hoặc bất kỳ trình chỉnh sửa CSV nào.
  2. Ví dụ dữ liệu:
    name,url,image,code_3m,old_code,upc,category,description,specifications,price,meta_description
    "Que Kiểm Tra Chất Lượng Dầu 3M™ 1005",https://www.3m.com.vn/...,https://multimedia.3m.com/...,7012593206,XF600147219,06912504116641,Vật dụng phòng thí nghiệm,"Dễ sử dụng...",3M ID 7012593206,,"Dễ sử dụng..."
    
  3. Bạn có thể lọc, sắp xếp, hoặc phân tích dữ liệu theo danh mục, mã sản phẩm, v.v.

Bước 6: Mẹo và Lưu Ý

6.1 Tối Ưu Hóa

  • Delay: Script có delay 0.5s giữa các request để tránh bị chặn. Có thể tăng nếu cần.
  • Proxy: Nếu bị chặn IP, sử dụng proxy (thêm vào requests.get()).
  • Giới hạn: Để test, có thể giới hạn số sản phẩm trong main().

6.2 Xử Lý Lỗi Thường Gặp

  • Lỗi 404: Một số sản phẩm có thể đã chuyển sang trang khác (Solventum/Littmann).
  • Lỗi kết nối: Kiểm tra internet hoặc thử lại sau.
  • Lỗi ghi file: Đảm bảo thư mục có quyền ghi.

6.3 Mở Rộng Script

  • Thêm crawl hình ảnh: Tải xuống hình ảnh từ URL.
  • Phân tích dữ liệu: Sử dụng pandas để phân tích CSV.
  • Tự động hóa: Chạy script định kỳ với cron job.

Rinez

About

Script Python để crawl dữ liệu sản phẩm từ trang 3M Việt Nam

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages