Web Scraping để so sánh giá vào năm 2024– Các bước đơn giản

trăn, cạo, Tháng Giêng-04-20235 phút đọc

Web scraping là nghệ thuật trích xuất dữ liệu từ internet. Khi nói đến các ứng dụng của nó, nó có một lượng lớn các ứng dụng. Một trong số đó là so sánh giá từ các trang web khác nhau. Mua sắm trực tuyến đã trở thành sự bùng nổ trong ngành công nghiệp hiện nay và so sánh giá của một số sản phẩm nhất định đã trở thành một điều cần thiết. Chúng ta

Web scraping là nghệ thuật trích xuất dữ liệu từ internet. Khi nói đến các ứng dụng của nó, nó có một lượng lớn các ứng dụng. Một trong số đó là so sánh giá từ các trang web khác nhau. Mua sắm trực tuyến đã trở thành sự bùng nổ trong ngành công nghiệp hiện nay và so sánh giá của một số sản phẩm nhất định đã trở thành một điều cần thiết. Tất cả chúng ta đều truy cập nhiều trang web khi chúng ta cần mua một sản phẩm cụ thể nhưng bạn đã bao giờ nghĩ đến việc tạo ra một công cụ so sánh giá thực hiện cùng một công việc cho bạn và đặt thỏa thuận tốt nhất trước mặt bạn chưa?  

Trong bài viết này, chúng tôi sẽ tạo ra một công cụ quét web tuyệt vời để so sánh giá bằng Python cho phép bạn theo dõi giá của các sản phẩm trên các nguồn khác nhau và thông báo cho bạn về hiệu suất của các đối thủ cạnh tranh khác nhau trên thị trường. Hơn nữa, nó cũng sẽ thông báo cho doanh nghiệp liệu giá của một sản phẩm cụ thể tăng hay giảm giá dự đoán.

Nguồn dữ liệu chúng tôi sẽ sử dụng cho bài viết này sẽ là tệp JSON và chúng tôi sẽ so sánh giá sản phẩm chúng tôi nhận được từ Amazon, eBay và Walmart. Dữ liệu mẫu của chúng tôi trông giống như bên dưới,

Vui lòng chuyển đến bất kỳ phần nào để tìm hiểu thêm về quét web để so sánh giá trong python!

Mục lục

Các bước liên quan đến Web Scraping để so sánh giá:

[
  {
    "last_visited": "2018-01-30T13:38:01",
    "name": "PUMA Men's Evospeed 17.4 TT Soccer Shoe",
    "amazon_price": 36.94,
    "ebay_price": 37,
    "walmart_price": 37,
    "amazon_url": "https://www.amazon.com/PUMA-Evospeed-Soccer-Ultra-Yellow-Peacoat-Orange/dp/B01J5LEMZI/",
    "ebay_url": "https://www.ebay.com/itm/PUMA-Mens-Evospeed-17-4-Tt-Soccer-Shoe/302471489090",
    "walmart_url": "https://www.walmart.com/ip/PUMA-Men-s-Evospeed-17-4-Tt-Soccer-Shoe/587074448",
    "description": "The new evospeed 17.4 is a performance football boot for players of all levels. The soft and lightweight synthetic leather on the upper keeps the boot lightweight, comfortable and ensures durability. The lightweight outsole offers the perfect balance between traction, stability and acceleration PUMA is the global athletic brand that successfully fuses influences from sport, lifestyle and fashion. PUMA's unique industry perspective delivers the unexpected in sport-lifestyle footwear, apparel and accessories, through technical innovation and revolutionary design.",
    "brand": "PUMA",
    "image": "https://images-na.ssl-images-amazon.com/images/I/61v1mylcAqL._UL1500_.jpg"
  },
  {
    "last_visited": "2018-01-30T13:38:07",
    "name": "L'Oreal Paris Skin Care Revitalift Cicacream Face Moisturizer",
    "amazon_price": 13.97,
    "ebay_price": 13.99,
    "walmart_price": 13.97,
    "amazon_url": "https://www.amazon.com/LOreal-Paris-Revitalift-Cicacream-Moisturizer/dp/B074MBDRHW",
    "ebay_url": "https://www.ebay.com/itm/LOREAL-Paris-NEW-Revitalift-Cicacream-Anti-Wrinkle-Skin-Barrier-Repair-ORIGINAL/112715734801",
    "walmart_url": "https://www.walmart.com/ip/L-Or-al-Paris-Revitalift-Cicacream-Anti-Wrinkle-Skin-Barrier-Repair/519350834",
    "description": "Skin's moisture barrier weakens with age, resulting in greater moisture loss, more prominent wrinkles and loss of firmness. Lightweight, protective cream is formulated with Pro-Retinol, a powerful wrinkle-fighting ingredient and Centella Asiatica, an herb used in traditional Chinese medicine. Strengthens and repairs skin barrier to help resist visible lines, loss of firmness and other signs of aging that a weakened skin barrier can accentuate. See visible results immediately: skin feels healthier, softer, smoother and more supple. Skin feels noticeably more hydrated. Skin barrier is stronger, helping to resist signs of aging. In two weeks: fine lines appear visibly reduced. Firmness and elasticity look noticeably improved. In four weeks: wrinkles appear less visible. Clarity and tone improves, skin exudes luminosity. Skin continues to look and feel soft, smooth, healthy.",
    "brand": "L'Oreal Paris",
    "image": "https://images-na.ssl-images-amazon.com/images/I/71Ff2vn4vjL._SL1500_.jpg"
  },
  {
    "last_visited": "2018-01-30T13:38:12",
    "name": "Adidas Dynamic Pulse By Adidas For Men",
    "amazon_price": 6.96,
    "ebay_price": 18.99,
    "walmart_price": 7,
    "amazon_url": "https://www.amazon.com/Adidas-Dynamic-Toilette-3-4-Ounce-Bottle/dp/B000VON5F2/",
    "ebay_url": "https://www.ebay.com/itm/Adidas-DYNAMIC-PULSE-Cologne-for-Men-3-4-oz-edt-3-3-Spray-New-in-BOX/252837623533",
    "walmart_url": "https://www.walmart.com/ip/Adidas-Dynamic-Pulse-for-Men-3-4-oz-EDT/28664356",
    "description": "Launched by the design house of Adidas in 1997, ADIDAS DYNAMIC PULSE is a men's fragrance that possesses a blend of A fresh scent of citrus, cedar and mint with low tones of sweet fruits, fragrant woods and tonka bean. It is recommended for daytime wear.When applying any fragrance please consider that there are several factors which can affect the natural smell of your skin and, in turn, the way a scent smells on you. For instance, your mood, stress level, age, body chemistry, diet, and current medications may all alter the scents you wear. Similarly, factor such as dry or oily skin can even affect the amount of time a fragrance will last after being applied",
    "brand": "adidas",
    "image": "https://images-na.ssl-images-amazon.com/images/I/41%2BAnOP5nbL.jpg"
  },
  {
    "last_visited": "2018-01-30T13:38:19",
    "name": "Canon EOS Rebel T6 Digital SLR Camera",
    "amazon_price": 449,
    "ebay_price": 449,
    "walmart_price": 449,
    "amazon_url": "https://www.amazon.com/Canon-Digital-Camera-18-55mm-3-5-5-6/dp/B01CO2JPYS",
    "ebay_url": "https://www.ebay.com/itm/Canon-EOS-Rebel-T6-DSLR-Camera-with-18-55mm-Lens/232596041502",
    "walmart_url": "https://www.walmart.com/ip/Canon-EOS-Rebel-T6-DSLR-Camera-with-18-55mm-Lens-Black/50820749",
    "description": "",
    "brand": "Canon",
    "image": "https://images-na.ssl-images-amazon.com/images/I/81YszfZS8%2BL._SL1500_.jpg"
  },
  {
    "last_visited": "2018-01-30T13:38:25",
    "name": "Woodland Fox Critter 36' Mylar Balloon",
    "amazon_price": 5.49,
    "ebay_price": 6.49,
    "walmart_price": 7.6,
    "amazon_url": "https://www.amazon.com/Woodland-Fox-Critter-Mylar-Balloon/dp/B00S9TKVYO",
    "ebay_url": "https://www.ebay.com/itm/Woodland-Critters-Fox-36-inch-Foil-Balloon/132058119680",
    "walmart_url": "https://www.walmart.com/ip/Woodland-Fox-Foil-Balloon/43350002",
    "description": "Celebrate any occasion with an adorable woodland fox critter balloon! 36\" Woodland Critters fox shape foil balloon.",
    "brand": "Betallic",
    "image": "https://images-na.ssl-images-amazon.com/images/I/71Z9bG-BzuL._SL1500_.jpg"
  }
]

Một số lĩnh vực quan trọng liên quan đến kịch bản chúng tôi đang viết là amazon_price, ebay_price và walmart_price.

Bây giờ chúng tôi đã thấy dữ liệu của chúng tôi. Vì vậy, chúng ta hãy đi vào giai đoạn phát triển.

Chúng tôi sẽ tạo công cụ bằng Python 3.x và trước hết, chúng tôi sẽ sử dụng thư viện JSON để phân tích cú pháp JSON và xử lý thêm. Công cụ này cung cấp chức năng tuyệt vời bằng cách in tên sản phẩm và giá của trang web. Chúng tôi đang import thư viện JSON để phân tích cú pháp JSON.

Nhập JSON

Bây giờ chúng ta sẽ gọi hàm open() trong đoạn mã để đọc nội dung từ file JSON,

Nhập JSON
 
Nếu __name__ == '__main__':
    price_data = Không có
    giá = []
    với open('data.json', encoding='utf8')  f:
        price_data = f.read()
 
nếu price_data không phải là  Không có:
       json_price_data = json.loads(price_data)

Bây giờ dữ liệu JSON của chúng ta đã được đọc, chúng ta sẽ chuyển đổi nó thành các cấu trúc dữ liệu tích hợp của Python mà mã sẽ gọi phương thức json.loads() để chuyển đổi chuỗi JSON thành từ điển hoặc danh sách từ điển, tùy thuộc vào các mục.

Vì mục tiêu chính là tìm cửa hàng bán sản phẩm với giá thấp nhất, mục tiêu của chúng tôi là tìm giá tối thiểu và các chi tiết liên quan khác như sản phẩm và tên cửa hàng. Thông tin giá của cửa hàng có liên quan được lưu trữ trong các khóa amazon_price, ebay_price và Walmart_price. Để tìm mức tối thiểu của mỗi sản phẩm, chúng ta cần lặp lại các mục trong bảng giá.

for d in json_price_data:
            price.append({'name': d['name'], 'price': float(d['amazon_price']), 'url': d['amazon_url']})
            price.append({'name': d['name'], 'price': float(d['walmart_price']), 'url': d['walmart_url']})
            price.append({'name': d['name'], 'price': float(d['ebay_price']), 'url': d['ebay_url']})
            minPricedItem = min(price, key=lambda x: x['price'])
            print(minPricedItem)
            print('=================')
            price = []

Chúng tôi đang sử dụng lambdas và đặt khóa min() để đảm bảo trường giá đang được so sánh. Nó tạo ra kết quả sau:

Hãy cấu trúc lại định dạng một chút.

for d in json_price_data:
            price.append({'name': d['name'], 'price': d['amazon_price'], 'url': d['amazon_url']})
            price.append({'name': d['name'], 'price': d['walmart_price'], 'url': d['walmart_url']})
            price.append({'name': d['name'], 'price': d['ebay_price'], 'url': d['ebay_url']})
            minPricedItem = min(price, key=lambda x: float(x['price']))
            store_name = ''
            # Pick the store name based on url
            if 'amazon' in minPricedItem['url'].lower():
                store_name = 'Amazon'
            elif 'walmart' in minPricedItem['url'].lower():
                store_name = 'Amazon'
            elif 'ebay' in minPricedItem['url'].lower():
                store_name = 'eBay'
            print('{} is available in cheap price at {}. The price is ${}'.format(minPricedItem['name'], store_name,
                                                                                 minPricedItem['price']))
            price = []

Nó sẽ cho kết quả sau:

Chúc mừng! Chúng tôi đã tạo thành công tập lệnh mà bạn có thể chạy định kỳ để nhận được giá cập nhật của sản phẩm.

Proxy nào tốt nhất để quét web để so sánh giá bằng Python?

ProxyScrape là một trong những nhà cung cấp proxy trực tuyến phổ biến và đáng tin cậy nhất. Ba dịch vụ proxy bao gồm máy chủ proxy trung tâm dữ liệu chuyên dụng, máy chủ proxy dân dụng và máy chủ proxy cao cấp. Vì vậy, giải pháp tốt nhất có thể cho proxy HTTP tốt nhất để quét web để so sánh giá bằng python là gì? Trước khi trả lời câu hỏi đó, tốt nhất bạn nên xem các tính năng của từng máy chủ proxy.

Một proxy trung tâm dữ liệu chuyên dụng phù hợp nhất cho các tác vụ trực tuyến tốc độ cao, chẳng hạn như truyền một lượng lớn dữ liệu (về kích thước) từ các máy chủ khác nhau cho mục đích phân tích. Đó là một trong những lý do chính khiến các tổ chức chọn proxy chuyên dụng để truyền một lượng lớn dữ liệu trong một khoảng thời gian ngắn.

Một proxy trung tâm dữ liệu chuyên dụng có một số tính năng, chẳng hạn như băng thông không giới hạn và kết nối đồng thời, proxy HTTP chuyên dụng để giao tiếp dễ dàng và xác thực IP để bảo mật hơn. Với 99,9% thời gian hoạt động, bạn có thể yên tâm rằng trung tâm dữ liệu chuyên dụng sẽ luôn hoạt động trong bất kỳ phiên nào. Cuối cùng nhưng không kém phần quan trọng ProxyScrape Cung cấp dịch vụ khách hàng tuyệt vời và sẽ giúp bạn giải quyết vấn đề của mình trong vòng 24-48 giờ làm việc. 

Tiếp theo là proxy dân cư. Khu dân cư là một proxy đi đến cho mọi người tiêu dùng nói chung. Lý do chính là địa chỉ IP của proxy khu dân cư giống với địa chỉ IP do ISP cung cấp. Điều này có nghĩa là việc xin phép máy chủ mục tiêu để truy cập dữ liệu của nó sẽ dễ dàng hơn bình thường. 

Các tính năng khác của ProxyScrapeProxy khu dân cư của là một tính năng xoay. Proxy xoay vòng giúp bạn tránh bị cấm vĩnh viễn đối với tài khoản của mình vì proxy khu dân cư của bạn tự động thay đổi địa chỉ IP của bạn, khiến máy chủ đích khó kiểm tra xem bạn có đang sử dụng proxy hay không. 

Ngoài ra, các tính năng khác của proxy dân cư là: băng thông không giới hạn, cùng với kết nối đồng thời, proxy HTTP / s chuyên dụng, proxy bất cứ lúc nào vì 7 triệu cộng với proxy trong nhóm proxy, xác thực tên người dùng và mật khẩu để bảo mật hơn và cuối cùng nhưng không kém phần quan trọng, khả năng thay đổi máy chủ quốc gia. Bạn có thể chọn máy chủ mong muốn của mình bằng cách thêm mã quốc gia vào xác thực tên người dùng. 

Cái cuối cùng là proxy cao cấp. Proxy cao cấp cũng giống như proxy trung tâm dữ liệu chuyên dụng. Các chức năng vẫn giữ nguyên. Sự khác biệt chính là khả năng tiếp cận. Trong proxy cao cấp, danh sách proxy (danh sách chứa proxy) được cung cấp cho mọi người dùng trên ProxyScrape'mạng lưới. Đó là lý do tại sao các proxy cao cấp có chi phí thấp hơn so với proxy trung tâm dữ liệu chuyên dụng.

Vì vậy, giải pháp tốt nhất có thể cho proxy HTTP tốt nhất để quét web để so sánh giá bằng python là gì? Câu trả lời sẽ là "proxy dân cư". Lý do rất đơn giản. Như đã nói ở trên, proxy khu dân cư là một proxy luân phiên, có nghĩa là địa chỉ IP của bạn sẽ được thay đổi động trong một khoảng thời gian, điều này có thể hữu ích để đánh lừa máy chủ bằng cách gửi nhiều yêu cầu trong một khung thời gian nhỏ mà không nhận được khối IP. 

Tiếp theo, điều tốt nhất sẽ là thay đổi máy chủ proxy dựa trên quốc gia. Bạn chỉ cần thêm quốc gia ISO_CODE vào cuối xác thực IP hoặc xác thực tên người dùng và mật khẩu. 

Đề xuất đọc:

Scrape nhận xét trên YouTube - 5 bước đơn giảnTop 8 công cụ cạo web Python tốt nhất năm 2023Web Scraping cho các bài báo sử dụng Python – Cách tốt nhất vào năm 2023

Câu hỏi thường gặp:

1. Cạo giá là gì?
Cạo giá, như tên cho thấy, là quá trình trích xuất giá của một sản phẩm hoặc dịch vụ trực tuyến để thực hiện bất kỳ phân tích nào, chẳng hạn như phân tích đối thủ cạnh tranh, để cải thiện chiến lược tiếp thị. Tự động hóa quá trình cạo có thể giúp bạn giảm thời gian và tài nguyên, và bạn có thể làm điều đó với sự trợ giúp của python.
2. Proxy tốt nhất để quét web để so sánh giá là gì?
Proxy tốt nhất để thực hiện quét web để so sánh giá là "proxy dân cư". Lý do là proxy dân cư là một proxy luân phiên, có nghĩa là địa chỉ IP của bạn sẽ được thay đổi động trong một khoảng thời gian, điều này có thể hữu ích để đánh lừa máy chủ bằng cách gửi nhiều yêu cầu trong một khung thời gian nhỏ mà không nhận được khối IP.
3. Quét web để so sánh giá có hợp pháp không?
Câu trả lời là có. Bạn có thể cạo giá từ một trang web Thương mại điện tử vì tất cả thông tin được cung cấp cho công chúng, có nghĩa là tất cả dữ liệu công khai có thể được cạo.

Kết thúc

This article explored one more wonder of web scraping, i.e. “Price Comparison”. Not only this, we have built a tool that can do the price comparison job for you and keep you updated with the market trends. This article hopes to give enough information on web scraping for price comparison in an easy way. A proxy server is the best companion for web scraping. ProxyScrape provides best in a class residential proxy for your web scraping for price comparison projects. You can check the best residential proxy here.