Việc phát hiện ra thông tin từ các nhà bán lẻ điện tử như AliExpress có thể rất có lợi cho việc thu thập thông tin sản phẩm, giám sát biến động giá, thu thập đánh giá, v.v. Trong bài viết này, chúng tôi sẽ khám phá quá trình thu thập thông tin về các sản phẩm (như tên, giá, xếp hạng, v.v.) và cũng xem xét các đánh giá sản phẩm. Chúng tôi cũng sẽ trình bày cách làm cho máy cạo động bằng cách truyền URL sản phẩm, tự động truy xuất ID sản phẩm và lưu dữ liệu vào tệp CSV.
Hướng dẫn này sẽ sử dụng nhà viết kịch để hiển thị nội dung động và yêu cầu tìm nạp dữ liệu xem xét. Chúng tôi cũng sẽ đảm bảo cái cào là đạo đức và tuân thủ các thực tiễn tốt nhất.
Trước khi chúng tôi bắt đầu, hãy đảm bảo bạn đã cài đặt các thư viện Python sau:
Bạn có thể cài đặt các gói này bằng cách chạy các lệnh sau:
# Cài đặt Playwright
pip install playwright
# Cài đặt Requests
pip install requests
# Cài đặt LXML để phân tích cú pháp HTML
pip install lxml
# Cài đặt gấu trúc để thao tác và lưu dữ liệu
pip install pandas
Sau khi cài đặt Playwright, bạn cũng sẽ cần cài đặt các nhị phân trình duyệt cần thiết:
playwright install
Điều này sẽ tải xuống và thiết lập trình duyệt cần thiết để nhà viết kịch hoạt động đúng.
Các trang sản phẩm AliExpress là động, có nghĩa là chúng tải nội dung qua JavaScript. Để xử lý việc này, chúng tôi sẽ sử dụng nhà viết kịch, thư viện Python cho phép bạn điều khiển trình duyệt không đầu và tương tác với nội dung động.
Đây là cách bạn có thể gửi một yêu cầu và điều hướng đến trang sản phẩm:
from playwright.async_api import async_playwright
async def get_page_content(url):
async with async_playwright() as p:
# Khởi chạy trình duyệt với proxy nếu cần (có thể được xóa nếu không sử dụng proxy)
browser = await p.firefox.launch(
headless=False,
proxy={"server": '', 'username': '', 'password': ''}
)
page = await browser.new_page()
await page.goto(url, timeout=60000)
# Trích xuất nội dung trang
content = await page.content()
await browser.close()
return content
# Ví dụ URL
url = 'https://www.aliexpress.com/item/3256805354456256.html'
Khi chúng tôi có nội dung trang, chúng tôi có thể trích xuất dữ liệu sản phẩm bằng các truy vấn LXML và XPath. Chúng tôi sẽ thu thập các chi tiết như tiêu đề sản phẩm, giá cả, xếp hạng, số lượng đánh giá và số lượng mặt hàng được bán.
from lxml.html import fromstring
def extract_product_data(content):
parser = fromstring(content)
# Trích xuất chi tiết sản phẩm bằng cách sử dụng XPath
title = parser.xpath('//h1[@data-pl="product-title"]/text()')[0].strip()
price = parser.xpath('//div[@class="price--current--I3Zeidd product-price-current"]/span/text()')[0].strip()
rating = ' '.join(parser.xpath('//a[@class="reviewer--rating--xrWWFzx"]/strong/text()')).strip()
total_reviews = parser.xpath('//a[@class="reviewer--reviews--cx7Zs_V"]/text()')[0].strip()
sold_count = parser.xpath('//span[@class="reviewer--sold--ytPeoEy"]/text()')[0].strip()
product_data = {
'title': title,
'price': price,
'rating': rating,
'total_reviews': total_reviews,
'sold_count': sold_count
}
return product_data
Mã này sử dụng XPath để trích xuất các chi tiết sản phẩm có liên quan từ nội dung HTML của trang.
AliExpress có điểm cuối API riêng để tìm nạp các đánh giá sản phẩm. Bạn có thể trích xuất ID sản phẩm từ URL một cách linh hoạt và sử dụng nó để tìm nạp các đánh giá thông qua các yêu cầu. Trong chức năng này:
import requests
def extract_product_id(url):
# Trích xuất ID sản phẩm từ URL
product_id = url.split('/')[-1].split('.')[0]
return product_id
def scrape_reviews(product_id, page_num=1, page_size=10):
headers = {
'accept': 'application/json, text/plain, */*',
'accept-language': 'en-IN,en;q=0.9',
'referer': f'https://www.aliexpress.com/item/{product_id}.html',
'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36',
}
params = {
'productId': product_id,
'lang': 'en_US',
'country': 'US',
'page': str(page_num),
'pageSize': str(page_size),
'filter': 'all',
'sort': 'complex_default',
}
response = requests.get('https://feedback.aliexpress.com/pc/searchEvaluation.do', params=params, headers=headers)
reviews = response.json()['data']['evaViewList']
# Chỉ trích xuất văn bản đánh giá
review_texts = [review['buyerFeedback'] for review in reviews]
return review_texts
Sau khi lấy các chi tiết và đánh giá sản phẩm, chúng tôi lưu dữ liệu này vào tệp CSV bằng thư viện Pandas.
import pandas as pd
def save_to_csv(product_data, reviews, product_id):
# Lưu chi tiết sản phẩm vào CSV
df_product = pd.DataFrame([product_data])
df_product.to_csv(f'product_{product_id}_data.csv', index=False)
# Lưu đánh giá cho CSV
df_reviews = pd.DataFrame({'reviews': reviews})
df_reviews.to_csv(f'product_{product_id}_reviews.csv', index=False)
print(f"Data saved for product {product_id}.")
Các chi tiết và đánh giá của sản phẩm được lưu vào các tệp CSV riêng biệt với ID sản phẩm có trong tên tệp để nhận dạng dễ dàng.
Tại đây, cách thức hoạt động của công việc động hoàn toàn hoạt động:
# Trích xuất ID sản phẩm từ URL
def extract_product_id(url):
return url.split('/')[-1].split('.')[0]
from playwright.async_api import async_playwright
from lxml.html import fromstring
import requests
import pandas as pd
# Nhận nội dung trang bằng nhà viết kịch
async def get_page_content(url):
async with async_playwright() as p:
browser = await p.firefox.launch(
headless=False,
proxy={"server": '', 'username': '', 'password': ''}
)
page = await browser.new_page()
await page.goto(url, timeout=60000)
content = await page.content()
await browser.close()
return content
# Trích xuất dữ liệu sản phẩm
def extract_product_data(content):
parser = fromstring(content)
title = parser.xpath('//h1[@data-pl="product-title"]/text()')[0].strip()
price = parser.xpath('//div[@class="price--current--I3Zeidd product-price-current"]/span/text()')[0].strip()
rating = ' '.join(parser.xpath('//a[@class="reviewer--rating--xrWWFzx"]/strong/text()')).strip()
total_reviews = parser.xpath('//a[@class="reviewer--reviews--cx7Zs_V"]/text()')[0].strip()
sold_count = parser.xpath('//span[@class="reviewer--sold--ytPeoEy"]/text()')[0].strip()
return {
'title': title,
'price': price,
'rating': rating,
'total_reviews': total_reviews,
'sold_count': sold_count
}
# Trích xuất ID sản phẩm từ URL
def extract_product_id(url):
return url.split('/')[-1].split('.')[0]
# Đánh giá Scrape
def scrape_reviews(product_id, page_num=1, page_size=10):
headers = {
'accept': 'application/json, text/plain, */*',
'referer': f'https://www.aliexpress.com/item/{product_id}.html',
'user-agent': 'Mozilla/5.0'
}
params = {
'productId': product_id,
'lang': 'en_US',
'page': str(page_num),
'pageSize': str(page_size),
}
response = requests.get('https://feedback.aliexpress.com/pc/searchEvaluation.do', params=params, headers=headers)
reviews = response.json()['data']['evaViewList']
return [review['buyerFeedback'] for review in reviews]
# Lưu dữ liệu sản phẩm và đánh giá cho CSV
def save_to_csv(product_data, reviews, product_id):
pd.DataFrame([product_data]).to_csv(f'product_{product_id}_data.csv', index=False)
pd.DataFrame({'reviews': reviews}).to_csv(f'product_{product_id}_reviews.csv', index=False)
print(f'Saved into: product_{product_id}_data.csv')
print(f'Saved into: product_{product_id}_reviews.csv')
# Chức năng chính
async def main(url):
content = await get_page_content(url)
product_data = extract_product_data(content)
product_id = extract_product_id(url)
reviews = scrape_reviews(product_id)
save_to_csv(product_data, reviews, product_id)
# Chạy cái cạp
import asyncio
url = 'https://www.aliexpress.com/item/3256805354456256.html'
asyncio.run(main(url))
Khi lấy dữ liệu, điều quan trọng là phải tuân theo các hướng dẫn đạo đức:
Thực hiện theo các hướng dẫn này sẽ giúp bạn cào cào về mặt đạo đức và có trách nhiệm, giảm thiểu rủi ro cho cả người dùng và hệ thống AliExpress.
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
Bình luận: 0