Skip to content

TungTV205/AI-Web-Scraper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🤖 AI Web Scraper

Một công cụ web scraping mạnh mẽ, kết hợp tự động hóa bằng Selenium với khả năng trích xuất nội dung dựa trên AI sử dụng mô hình llama3.2 của Ollama. Bạn chỉ cần mô tả dữ liệu muốn lấy, công cụ sẽ tự động tìm và trích xuất từ bất kỳ website nào.

✨ Tính năng

  • 🌐 Web Scraping toàn diện: Có thể thu thập dữ liệu từ bất kỳ website nào bằng Selenium WebDriver.
  • 🧠 Trích xuất bằng AI: Chỉ cần mô tả bằng ngôn ngữ tự nhiên loại thông tin cần lấy.
  • 📊 Cấu trúc dữ liệu thông minh: Tự động sắp xếp dữ liệu đã trích xuất thành định dạng có cấu trúc.
  • 📄 Xuất CSV: Xuất kết quả ra file CSV với khả năng xử lý dữ liệu thông minh.
  • 🎯 Xử lý theo khối (chunk): Chia nhỏ các trang web lớn thành nhiều phần dễ quản lý.
  • 👀 Xem trước kết quả: Xem trước cấu trúc dữ liệu trước khi tải xuống.
  • 🔧 Tùy chọn nâng cao: Xem nội dung thô đã scrape và thông tin xử lý.
  • 💻 Giao diện thân thiện: Ứng dụng web gọn gàng với Streamlit.

🔧 Công nghệ sử dụng

  • Frontend: Streamlit
  • Web Scraping: Selenium WebDriver + ChromeDriver
  • HTML Parsing: BeautifulSoup4
  • Xử lý AI: LangChain + Ollama (llama3.2)
  • Xử lý dữ liệu: Pandas
  • Môi trường: Python 3.10

📋 Yêu cầu cài đặt

Trước khi bắt đầu, bạn cần có:

  • Python 3.10 trở lên
  • Conda (Anaconda hoặc Miniconda)
  • Ollama với mô hình llama3.2
  • Trình duyệt Chrome (để chạy ChromeDriver)

Cài đặt Ollama và mô hình llama3.2

  1. Cài Ollama tại https://ollama.ai
  2. Tải mô hình llama3.2:
    ollama pull llama3.2
  3. Kiểm tra mô hình đã cài đặt:
    ollama list

🚀 Cài đặt dự án

  1. Clone repository:
    git clone <your-repo-url>
    cd AI_Scraper
  2. Tạo và kích hoạt môi trường Conda:
    conda env create -f environment.yml
    conda activate Crawl_Data
  3. Cài ChromeDriver:
    • Tải tại https://chromedriver.chromium.org
    • Đặt file chromedriver.exe vào thư mục gốc dự án.
    • Đảm bảo phiên bản trùng với Chrome đang dùng.
  4. Khởi chạy Ollama:
    ollama serve
    (giữ cửa sổ terminal này chạy song song)

🎯 Cách sử dụng

  1. Khởi chạy ứng dụng:
    streamlit run main.py
  2. Mở trình duyệt và truy cập URL hiển thị (thường là http://localhost:8501).
  3. Thao tác trên giao diện:
    • Nhập URL website muốn scrape.
    • Mô tả thông tin cần lấy (ví dụ: “Lấy tất cả tên sản phẩm và giá”).
    • Nhấn Scrape and Analyze.
    • Xem trước và tải kết quả dưới dạng CSV.

📝 Ví dụ ứng dụng

  • E-commerce
    • URL: https://example-store.com
    • Mô tả: "Lấy tên sản phẩm, giá và đánh giá"
  • Báo chí
    • URL: https://news-website.com
    • Mô tả: "Lấy tiêu đề, tác giả và ngày xuất bản"
  • Thông tin liên hệ
    • URL: https://company-website.com
    • Mô tả: "Lấy email và số điện thoại"
  • Bất động sản
    • URL: https://property-site.com
    • Mô tả: "Lấy địa chỉ, giá và diện tích"

🏗️ Cấu trúc dự án

AI_Scraper/ ├── main.py # Giao diện Streamlit ├── scrape.py # Logic web scraping bằng Selenium ├── parse.py # Xử lý AI với Ollama ├── csv_export.py # Xuất dữ liệu ra CSV ├── environment.yml # Thư viện sẽ cần sử dụng trong dự án ├── chromedriver.exe # ChromeDriver (không commit vào git) ├── .gitignore # Quy tắc ignore cho Git └── pycache/ # Cache Python (không commit vào git)


🔧 Cấu hình nâng cao

  • Xem nội dung thô: Xem HTML đã làm sạch trước khi AI xử lý.
  • Thông tin chunk: Hiển thị cách nội dung được chia nhỏ để xử lý.

Bạn có thể tùy chỉnh trong code:

  • Kích thước chunk: mặc định 6000 ký tự (scrape.py)
  • Mô hình AI: mặc định llama3.2 (parse.py)
  • WebDriver options: chế độ headless, timeout (scrape.py)

📊 Xuất dữ liệu

Công cụ sẽ tự động cấu trúc dữ liệu theo mẫu nhận diện:

  • Danh sách: chuyển bullet points và danh sách số.
  • Cặp key-value: phân tích dữ liệu dạng key: value.
  • Bảng: xử lý dữ liệu dạng bảng có dấu |.
  • Metadata: thêm thời gian trích xuất và mô tả truy vấn.

🐛 Xử lý lỗi thường gặp

  • “AI model not available”
    • Kiểm tra Ollama đang chạy (ollama serve).
    • Đảm bảo đã tải mô hình llama3.2.
  • Lỗi ChromeDriver
    • Cập nhật ChromeDriver khớp phiên bản Chrome.
    • Đặt đúng file chromedriver.exe trong thư mục gốc.
  • Web không load được
    • Một số web chặn bot.
    • Tăng sleep time trong scrape.py.
    • Kiểm tra nếu web cần login.
  • Thiếu bộ nhớ khi scrape web lớn
    • Giảm kích thước chunk trong split_dom_content().
    • Công cụ sẽ tự động chia nhỏ nội dung.

🔒 Bảo mật & Đạo đức

  • Tôn trọng robots.txt: Kiểm tra trước khi scrape.
  • Rate limiting: Có cơ chế delay để tránh quá tải server.
  • Tuân thủ pháp lý: Đảm bảo bạn có quyền scrape.
  • Dữ liệu cá nhân: Cẩn trọng với dữ liệu nhạy cảm.

🚀 Tối ưu hiệu suất

  • Tối ưu chunk size: Chunk nhỏ xử lý nhanh, chunk lớn cho nhiều ngữ cảnh hơn.
  • Mô tả càng cụ thể càng tốt để kết quả chính xác hơn.
  • Theo dõi hiệu suất Ollama: Đảm bảo đủ RAM chạy mô hình.
  • Giải phóng tài nguyên Chrome: Đóng tab không cần thiết.

🤝 Đóng góp

  1. Fork repo.
  2. Tạo nhánh mới: git checkout -b feature-name.
  3. Code + test kỹ.
  4. Commit: git commit -am 'Add feature'.
  5. Push: git push origin feature-name.
  6. Tạo Pull Request.

📄 Giấy phép

Dự án này là mã nguồn mở. Vui lòng đảm bảo tuân thủ license của các thư viện và quy định của website khi scrape.


🆘 Hỗ trợ

Nếu gặp sự cố:

  1. Xem lại phần Troubleshooting.
  2. Kiểm tra đã cài đủ yêu cầu.
  3. Xem log của Ollama khi lỗi AI.
  4. Kiểm tra console của trình duyệt.

🔮 Hướng phát triển tương lai

  • Hỗ trợ thêm các mô hình AI (OpenAI, Claude, v.v.).
  • Proxy tích hợp để truy cập web bị giới hạn.
  • Lên lịch scrape tự động.
  • Lưu dữ liệu vào database.
  • API để truy cập bằng lập trình.
  • Hỗ trợ web SPA (JavaScript nặng).
  • Xử lý nhiều URL cùng lúc.
  • Xuất thêm định dạng khác (JSON, XML, v.v.).

Xây dựng với ❤️ bằng Streamlit, Selenium & Ollama AI

Đảm bảo Ollama chạy với mô hình llama3.2 trước khi sử dụng ứng dụng.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages