Ebay là một nền tảng trực tuyến nổi tiếng cung cấp cơ hội giao dịch trong một loạt các sản phẩm trong số những người dùng đã đăng ký. Trong hướng dẫn này, chúng tôi sẽ giải thích cách cạo dữ liệu từ danh sách ebay bằng Python. Do đó, chúng tôi sẽ quan tâm đến các chi tiết có sẵn từ chính danh sách cũng như từ việc đi đến từng sản phẩm lần lượt để biết thêm chi tiết tốt.
Để bắt đầu, hãy đảm bảo bạn đã cài đặt các thư viện Python sau:
Cài đặt các thư viện này bằng cách sử dụng:
pip install requests lxml pandas
Khi tìm kiếm sản phẩm trên eBay, mỗi URL trang có thể được sửa đổi để điều hướng thông qua các kết quả được phân trang. Ví dụ:
Tham số _PGN được sử dụng để điều hướng qua nhiều trang danh sách, cho phép truy xuất dữ liệu mở rộng. Hãy bắt đầu quá trình cạo.
Để bắt đầu, chúng tôi sẽ thiết lập các tiêu đề để bắt chước yêu cầu trình duyệt thực, giúp tránh phát hiện và chặn tiềm năng bằng các biện pháp chống BOT của eBay. Sau đó, chúng tôi sẽ gửi một yêu cầu đến trang danh sách để thu thập các liên kết cho từng sản phẩm.
import requests
from lxml.html import fromstring
# Xác định các tiêu đề để mô phỏng một trình duyệt thực
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-IN,en;q=0.9',
'cache-control': 'no-cache',
'dnt': '1',
'pragma': 'no-cache',
'priority': 'u=0, i',
'sec-ch-ua': '"Google Chrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Linux"',
'sec-fetch-dest': 'document',
'sec-fetch-mode': 'navigate',
'sec-fetch-site': 'none',
'sec-fetch-user': '?1',
'upgrade-insecure-requests': '1',
'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36',
}
# Yêu cầu tham số cho truy vấn tìm kiếm
params = {
'_nkw': 'laptop',
}
# Gửi yêu cầu đến trang danh sách ebay
listing_page_response = requests.get('https link', params=params, headers=headers)
listing_parser = fromstring(listing_page_response.text)
Trên trang danh sách, chúng tôi sẽ trích xuất các URL cho các sản phẩm riêng lẻ. Điều này cho phép chúng tôi truy cập từng trang sản phẩm để thu thập các chi tiết cụ thể, chẳng hạn như tiêu đề sản phẩm, giá cả, v.v.
# Phân tích trang danh sách để trích xuất các liên kết sản phẩm
links = listing_parser.xpath('//div[@class="s-item__info clearfix"]/a[@_sp="p2351460.m1686.l7400"]/@href')
# Đầu ra một mẫu của các liên kết được tìm thấy
print("Product Links:", links[:5]) # Display the first five product links
Với URL sản phẩm trong tay, chúng tôi sẽ truy cập từng trang sản phẩm và trích xuất các chi tiết sau:
Tiếp theo, chúng tôi sẽ lặp qua từng liên kết và sử dụng các biểu thức XPath để xác định vị trí thông tin cần thiết trên trang sản phẩm.
product_data = []
for url in links:
# Gửi yêu cầu đến trang sản phẩm
product_page_response = requests.get(url, headers=headers)
product_parser = fromstring(product_page_response.text)
# Trích xuất dữ liệu bằng cách sử dụng XPath
try:
product_title = product_parser.xpath('//h1[@class="x-item-title__mainTitle"]/span/text()')[0]
price = product_parser.xpath('//div[@data-testid="x-price-primary"]/span/text()')[0]
shipping_cost = product_parser.xpath('//div[@class="ux-labels-values col-12 ux-labels-values--shipping"]//div[@class="ux-labels-values__values-content"]/div/span/text()')[0]
product_condition = product_parser.xpath('//div[@class="x-item-condition-text"]/div/span/span[2]/text()')[0]
available_quantity = product_parser.xpath('//div[@class="x-quantity__availability"]/span/text()')[0]
sold_quantity = product_parser.xpath('//div[@class="x-quantity__availability"]/span/text()')[1]
payment_options = ', '.join(product_parser.xpath('//div[@class="ux-labels-values col-12 ux-labels-values__column-last-row ux-labels-values--payments"]/div[2]/div/div//span/@aria-label'))
return_policy = product_parser.xpath('//div[@class="ux-layout-section ux-layout-section--returns"]//div[@class="ux-labels-values__values-content"]/div/span/text()')[0]
# Lưu trữ dữ liệu trong một từ điển
product_info = {
'Title': product_title,
'Price': price,
'Shipping Cost': shipping_cost,
'Condition': product_condition,
'Available Quantity': available_quantity,
'Sold Quantity': sold_quantity,
'Payment Options': payment_options,
'Return Policy': return_policy,
}
product_data.append(product_info)
except IndexError as e:
print(f"An error occurred: {e}")
Sau khi thu thập dữ liệu, chúng tôi có thể lưu nó vào tệp CSV bằng gấu trúc.
import pandas as pd
# Chuyển đổi dữ liệu thành DataFrame
df = pd.DataFrame(product_data)
# Lưu vào CSV
df.to_csv('ebay_product_data.csv', index=False)
print("Data saved to ebay_product_data.csv")
Ebay sử dụng giới hạn tỷ lệ để ngăn chặn các yêu cầu quá mức. Dưới đây là một vài phương pháp để tránh phát hiện:
Bằng cách làm theo các thực tiễn tốt nhất này, bạn có thể giảm thiểu rủi ro bị chặn và tiếp tục xóa dữ liệu hiệu quả.
Tại đây, mã đầy đủ để cạo dữ liệu eBay và lưu nó vào tệp CSV:
import requests
import random
from lxml.html import fromstring
import pandas as pd
useragents = ['Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36',
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36',
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36']
# Xác định tiêu đề cho yêu cầu
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-IN,en;q=0.9',
'cache-control': 'no-cache',
'dnt': '1',
'pragma': 'no-cache',
'priority': 'u=0, i',
'sec-ch-ua': '"Google Chrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Linux"',
'sec-fetch-dest': 'document',
'sec-fetch-mode': 'navigate',
'sec-fetch-site': 'none',
'sec-fetch-user': '?1',
'upgrade-insecure-requests': '1',
'user-agent': random.choice(useragents),
}
# Tìm kiếm tham số truy vấn
params = {'_nkw': 'laptop'}
proxies = {
'http': 'IP:PORT',
'https': 'IP:PORT'
}
# Lấy trang danh sách
listing_page_response = requests.get('https://www.ebay.com/sch/i.html', params=params, headers=headers, proxies=proxies)
listing_parser = fromstring(listing_page_response.text)
links = listing_parser.xpath('//div[@class="s-item__info clearfix"]/a[@_sp="p2351460.m1686.l7400"]/@href')
# Trích xuất dữ liệu sản phẩm
product_data = []
for url in links:
product_page_response = requests.get(url, headers=headers, proxies=proxies)
product_parser = fromstring(product_page_response.text)
try:
product_info = {
'Title': product_parser.xpath('//h1[@class="x-item-title__mainTitle"]/span/text()')[0],
'Price': product_parser.xpath('//div[@data-testid="x-price-primary"]/span/text()')[0],
'Shipping Cost': product_parser.xpath('//div[@class="ux-labels-values col-12 ux-labels-values--shipping"]//div[@class="ux-labels-values__values-content"]/div/span/text()')[0],
'Condition': product_parser.xpath('//div[@class="x-item-condition-text"]/div/span/span[2]/text()')[0],
'Available Quantity': product_parser.xpath('//div[@class="x-quantity__availability"]/span/text()')[0],
'Sold Quantity': product_parser.xpath('//div[@class="x-quantity__availability"]/span/text()')[1],
'Payment Options': ', '.join(product_parser.xpath('//div[@class="ux-labels-values col-12 ux-labels-values__column-last-row ux-labels-values--payments"]/div[2]/div/div//span/@aria-label')),
'Return Policy': product_parser.xpath('//div[@class="ux-layout-section ux-layout-section--returns"]//div[@class="ux-labels-values__values-content"]/div/span/text()')[0]
}
product_data.append(product_info)
except IndexError:
continue
# Lưu vào CSV
df = pd.DataFrame(product_data)
df.to_csv('ebay_product_data.csv', index=False)
print("Data saved to ebay_product_data.csv")
Cạo ebay với Python cho phép thu thập dữ liệu hiệu quả trên các sản phẩm, giá cả và xu hướng. Trong hướng dẫn này, chúng tôi đã đề cập đến danh sách cạo, xử lý phân trang, thiết lập các tiêu đề và sử dụng proxy để tránh phát hiện. Hãy nhớ tôn trọng các điều khoản dịch vụ của eBay bằng cách sử dụng các khoảng thời gian yêu cầu có trách nhiệm và xoay vòng proxy. Với các công cụ này, giờ đây bạn có thể dễ dàng thu thập và phân tích dữ liệu eBay để hiểu biết về thị trường. Hạnh phúc cào!
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
Bình luận: 0