12/08/2019, 09:04

Cách crawl dữ liệu từ trang Amazon bằng Python

Crawl dữ liệu từ các trang web hẳn là 1 khái niệm không xa lạ đối với người người lập trình web. Tuy nhiên sau hơn 2 năm làm lập trình thì tôi mới có lần đầu trải nghiệm crawl dữ liệu của mình, mà lại còn từ 1 trang web mua bán nổi tiếng là Amazon. Có nhiều bạn lại hỏi làm lập trình ...

Cách crawl dữ liệu từ trang Amazon

Crawl dữ liệu từ các trang web hẳn là 1 khái niệm không xa lạ đối với người người lập trình web. Tuy nhiên sau hơn 2 năm làm lập trình thì tôi mới có lần đầu trải nghiệm crawl dữ liệu của mình, mà lại còn từ 1 trang web mua bán nổi tiếng là Amazon.

Có nhiều bạn lại hỏi làm lập trình viên thì crawl dữ liệu từ trang web mua bán amazon làm cái gì? Chuyện bắt đầu từ vài tháng trước khi thằng bạn thân của tôi uống rượu say và đi xe máy đâm vào cột điện bị gãy chân, đến giờ vẫn chưa phục hồi được để đi làm.

Vài ngày trước ngồi trà đá tâm sự thì có nghe nó kể về việc ngồi nhà làm drop shipping gì gì đó, tôi lên mạng search thì nó cũng khá hay. Mà nỗi khổ của việc này theo như lời nó kể thì kiểm soát giá sản phẩm ở trên trang amazon rất khó, phải vào từng link sản phẩm và ghi giá lại. Nên tôi mới nghĩ đến việc tại sao không crawl dữ liệu từ trang amazon về luôn cho nhanh.

Và sau 1 ngày ngồi mày mò, copy code các kiểu thì tôi đã có thể lấy được những gì từ trang web amazon mà thằng bạn tôi muốn. Bài viết sẽ hướng dẫn các bạn cách crawl dữ liệu từ trang Amazon bằng Python.

  Thư viện Matplotlib - Thư viện Python dùng để vẽ đồ thị
  Luồng và đa luồng trong Python là gì?

Cài đặt môi trường

Chúng ta sẽ cần có python và 1 vài package để tải trang web xuống và phân tích html.

  • Python: các bạn có thể tải phiên bản mới nhất tại đây tại đây.
  • Python PIP để cài đặt các package.
  • Python Requests cho phép bạn gửi request http.
  • Python LXML để phân tích html.

Nếu máy tính của bạn đã có pip, việc cài đặt lxml sẽ vô cùng đơn giản. Chỉ cần chạy lệnh sau ở trong terminal:

pip install requests lxml

Cách thực hiện

Khi các bạn vào một đường link sản phẩm, ví dụ như: https://www.amazon.com/Upgraded-Dimmable-Spectrum-Adjustable-Gooseneck/dp/B07PXP7DW5

Các bạn có thể nhìn thấy các thông tin sau:

Việc của tôi đơn giản là chỉ đi lấy price và name của sản phẩm thôi. Nhưng có những url mà amazon sẽ yêu cầu các bạn phải có cookies để hiển thị giá sản phẩm.

Việc lấy cookies trên trình duyệt rất đơn giản cho nên các bạn tự tìm hiểu nhé.

Ta sẽ có:

Chúng ta sẽ tải trang html về, đầu tiên cần request lên trang web để trang web trả về response:

response = requests.get(url, headers=headers, verify=False, cookies=cookies)

Url ở đây chính là https://www.amazon.com/Upgraded-Dimmable-Spectrum-Adjustable-Gooseneck/dp/B07PXP7DW5.

Và sau đó content của response chính là trang html mà các bạn cần lấy. Chúng ta sẽ phải biết được thuộc tính name và price của product sẽ hiển thị trên trang html đó như thế nào.

Cách đơn giản nhất là kiểm tra ở trên trình duyệt.

Như vậy giá sản phẩm sẽ có id là priceblock_ourprice

Tên của sản phẩm sẽ nằm trong thẻ h1 có id là title.

Ta cần viết 1 hàm để lấy các giá trị trên sau khi tải được trang html từ url về:

Sau khi lấy được data về, ta có thể lưu chúng vào file csv, chẳng hạn như tôi có 2 url cần lấy giá và tên sản phẩm về thì đoạn code thực hiện sẽ như sau:

Các bạn lưu tên file là product_amazon.py và chạy python product_amazon.py để thấy kết quả nhé.

Kết luận

Đây là ví dụ đơn giản để lấy 1 vài dữ liệu của sản phẩm trên amazon bằng ngôn ngữ python. Có rất nhiều cách để crawl dữ liệu về.

Hi vọng bài viết sẽ có ích cho các bạn, đặc biệt là các bạn đang làm nghề tay trái là drop shipping.

Cảm ơn các bạn đã đọc bài viết của mình!

Có thể bạn quan tâm:

  • Tại sao nên chọn Python để lập trình Web App?
  • Web Architecture 101 – Kiến trúc Web cơ bản cho người mới bắt đầu
  • Sử dụng Python để làm gì? – 3 Ứng dụng chính của Python

Xem thêm việc làm Software Developers trên TopDev

TopDev via viblo.asia

  Cách xây dựng mạng Nơ-ron bằng Python vô cùng đơn giản
  Hiểu về Regular expression: Xử lý ngôn ngữ tự nhiên đơn giản hơn với Python
0