Việc cạo dữ liệu thương mại điện tử cho chi tiết sản phẩm là hữu ích để tiến hành phân tích cạnh tranh, giám sát giá và thực hiện nghiên cứu thị trường. Việc cạo dữ liệu từ các trang sản phẩm có thể được thực hiện thuận tiện bằng Python. Hướng dẫn cạo thương mại điện tử này sẽ chỉ cho bạn cách thu hoạch thông tin bằng cách sử dụng kết hợp các yêu cầu và LXML từ các cửa hàng trực tuyến.
Xử lý các trang web cho Thương mại điện tử bao gồm nhận thông tin sản phẩm như tiêu đề, giá cả hoặc số định danh từ các cửa hàng trên Internet. Nhiều thư viện có sẵn trong Python làm điều này không chỉ dễ dàng mà còn khá hiệu quả. Trong bài viết này, chúng tôi sẽ tập trung vào các trang web thương mại điện tử của Web bằng Python. Trang web của Costco sẽ là đối tượng của chúng tôi.
Để bắt đầu, hãy để đảm bảo rằng chúng tôi có tất cả các công cụ hoặc thư viện thương mại điện tử Python có sẵn mà chúng tôi sẽ yêu cầu cho tập lệnh này:
pip install requests
pip install lxml
Chúng tôi sẽ tập trung vào việc trích xuất tên sản phẩm, tính năng và thương hiệu từ các trang cụ thể trên trang web.
Để bắt đầu với việc xây dựng một cạp sản phẩm thương mại điện tử, trước tiên bạn phải hiểu cách cấu trúc một trang web nhất định. Truy cập trang web và mở trang bạn muốn thu thập thông tin từ và kiểm tra các yếu tố cần thiết (ví dụ: tên, tính năng, thương hiệu của sản phẩm, v.v.).
Đầu tiên, chúng tôi sẽ nhập thư viện yêu cầu gửi GET đặc biệt cho các trang sản phẩm. Ngoài ra, chúng tôi sẽ định cấu hình các tiêu đề yêu cầu giống như yêu cầu trình duyệt.
import requests
# Danh sách các URL sản phẩm để cạo
urls = [
"https://www.costco.com/kirkland-signature-men's-sneaker.product.4000216649.html",
"https://www.costco.com/adidas-ladies'-puremotion-shoe.product.4000177646.html"
]
headers = {
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
'accept-language': 'en-US,en;q=0.9',
'cache-control': 'no-cache',
'dnt': '1',
'pragma': 'no-cache',
'sec-ch-ua': '"Not/A)Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"',
'sec-ch-ua-mobile': '?0',
'sec-fetch-dest': 'document',
'sec-fetch-mode': 'navigate',
'sec-fetch-site': 'same-origin',
'sec-fetch-user': '?1',
'upgrade-insecure-requests': '1',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
}
# Lặp qua từng url và gửi yêu cầu nhận
for url in urls:
response = requests.get(url, headers=headers)
if response.status_code == 200:
html_content = response.text
# Xử lý thêm sẽ được thêm vào trong các bước tiếp theo
else:
print(f"Failed to retrieve {url}. Status code: {response.status_code}")
Với LXML, chúng tôi sẽ trích xuất thông tin mong muốn từ HTML. Nó rất quan trọng khi đối phó với việc cạo dữ liệu thương mại điện tử.
from lxml import html
# Liệt kê để lưu trữ dữ liệu cào
scraped_data = []
# Lặp qua từng url và gửi yêu cầu nhận
for url in urls:
response = requests.get(url)
if response.status_code == 200:
html_content = response.content
# Phân tích nội dung HTML với LXML
tree = html.fromstring(html_content)
# Trích xuất dữ liệu bằng cách sử dụng XPath
product_name = tree.xpath('//h1[@automation-id="productName"]/text()')[0].strip()
product_feature = tree.xpath('//ul[@class="pdp-features"]//li//text()')
product_brand = tree.xpath('//div[@itemprop="brand"]/text()')[0].strip()
# Nối dữ liệu trích xuất vào danh sách
scraped_data.append({'Product Name': product_name, 'Product Feature': product_feature, 'Brand': product_brand})
else:
print(f"Failed to retrieve {url}. Status code: {response.status_code}")
# In dữ liệu được cạo
for item in scraped_data:
print(item)
Khi chúng tôi cố gắng cạo một trang web thương mại điện tử với Python, chúng tôi cần hiểu rằng hầu hết các trang web đều có một số hình thức phần mềm chống Bot. Sử dụng proxy và các đại lý người dùng xoay có thể giúp giảm bớt sự nghi ngờ của họ.
Sử dụng proxy với sự ủy quyền IP:
proxies = {
'http': 'http://your_proxy_ip:your_proxy_port',
'https': 'https://your_proxy_ip:your_proxy_port'
}
response = requests.get(url, proxies=proxies)
Đại lý người dùng xoay:
import random
user_agents = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
# Thêm nhiều đại lý người dùng khi cần thiết
]
headers['user-agent'] = random.choice(user_agents)
response = requests.get(url, headers=headers)
Cuối cùng, dữ liệu được trích xuất sẽ được lưu trữ ở định dạng CSV để tôi có thể phân tích nó sau này cho một quy trình cạo dữ liệu thương mại điện tử tiên tiến hơn.
import csv
csv_file = 'costco_products.csv'
fieldnames = ['Product Name', 'Product Feature', 'Brand']
# Viết dữ liệu vào tệp CSV
try:
with open(csv_file, mode='w', newline='', encoding='utf-8') as file:
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader()
for item in scraped_data:
writer.writerow(item)
print(f"Data saved to {csv_file}")
except IOError:
print(f"Error occurred while writing data to {csv_file}")
Dưới đây là phiên bản cuối cùng của tập lệnh cho việc cạo dữ liệu thương mại điện tử hiệu quả. Người ta có thể sao chép và dán nó để sử dụng dễ dàng.
import requests
import urllib3
from lxml import html
import csv
import random
import ssl
ssl._create_default_https_context = ssl._create_stdlib_context
urllib3.disable_warnings()
# Danh sách các URL sản phẩm để cạo
urls = [
"https://www.costco.com/kirkland-signature-men's-sneaker.product.4000216649.html",
"https://www.costco.com/adidas-ladies'-puremotion-shoe.product.4000177646.html"
]
# headers
headers = {
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
'accept-language': 'en-US,en;q=0.9',
'cache-control': 'no-cache',
'dnt': '1',
'pragma': 'no-cache',
'sec-ch-ua': '"Not/A)Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"',
'sec-ch-ua-mobile': '?0',
'sec-fetch-dest': 'document',
'sec-fetch-mode': 'navigate',
'sec-fetch-site': 'same-origin',
'sec-fetch-user': '?1',
'upgrade-insecure-requests': '1',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
}
# Danh sách các tác nhân người dùng cho các yêu cầu xoay
user_agents = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
# Thêm nhiều đại lý người dùng khi cần thiết
]
# Danh sách các proxy cho các yêu cầu xoay
proxies = [
{'http': 'http://your_proxy_ip:your_proxy_port', 'https': 'https://your_proxy_ip:your_proxy_port'},
{'http': 'http://your_proxy_ip2:your_proxy_port2', 'https': 'https://your_proxy_ip2:your_proxy_port2'},
# Thêm nhiều proxy khi cần thiết
]
# Liệt kê để lưu trữ dữ liệu cào
scraped_data = []
# Lặp qua từng url và gửi yêu cầu nhận
for url in urls:
# Chọn một tác nhân người dùng ngẫu nhiên cho các tiêu đề yêu cầu
headers['user-agent'] = random.choice(user_agents)
# Choose a random proxy for the request
proxy = random.choice(proxies)
# Gửi HTTP Nhận yêu cầu đến URL với các tiêu đề và proxy
response = requests.get(url, headers=headers, proxies=proxy, verify=False)
if response.status_code == 200:
# Lưu trữ nội dung HTML từ phản hồi
html_content = response.content
# Phân tích nội dung HTML với LXML
tree = html.fromstring(html_content)
# Trích xuất dữ liệu bằng cách sử dụng XPath
product_name = tree.xpath('//h1[@automation-id="productName"]/text()')[0].strip()
product_feature = tree.xpath('//ul[@class="pdp-features"]//li//text()')
product_brand = tree.xpath('//div[@itemprop="brand"]/text()')[0].strip()
# Nối dữ liệu trích xuất vào danh sách
scraped_data.append({'Product Name': product_name, 'Product Feature': product_feature, 'Brand': product_brand})
else:
# In thông báo lỗi nếu yêu cầu không thành công
print(f"Failed to retrieve {url}. Status code: {response.status_code}")
# Thiết lập tệp CSV
csv_file = 'costco_products.csv'
fieldnames = ['Product Name', 'Product Feature', 'Brand']
# Viết dữ liệu vào tệp CSV
try:
with open(csv_file, mode='w', newline='', encoding='utf-8') as file:
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader()
for item in scraped_data:
writer.writerow(item)
print(f"Data saved to {csv_file}")
except IOError:
# In thông báo lỗi nếu ghi vào tệp không thành công
print(f"Error occurred while writing data to {csv_file}")
Trà đồ điện tử Python hiện đã hoàn tất.
Việc sử dụng máy cạo web thương mại điện tử cho cửa hàng trực tuyến của Costco cho thấy mức độ hiệu quả của Python trong việc lấy dữ liệu sản phẩm để phân tích và ra quyết định kinh doanh tối ưu. Với các tập lệnh và thư viện phù hợp yêu cầu và LXML để cung cấp các trình trích xuất tự động, có thể xóa trang web mà không có bất kỳ gián đoạn quy trình công việc nào do API chống Bot gây ra. Cuối cùng, điều cần thiết là luôn luôn tuân thủ các quy định đạo đức khi thực hiện cào web thương mại điện tử.
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
Bình luận: 0