Главная страница Amazon с запросом Octopus.
mkdir scraping-amazon-python
cd scraping-amazon-python
pip install httpx
pip3 install pandas
pip3 install playwright
playwright install
Убедитесь, что процесс установки завершился без каких-либо проблем, прежде чем переходить к следующему шагу. Если у вас возникают трудности при настройке окружения, вы можете обратиться к ИИ-сервисам, таким как ChatGPT, Mistral AI и другим. Эти сервисы могут помочь с запросами о возникших ошибках и предоставить пошаговые инструкции для их устранения.
import httpx
from playwright.async_api import async_playwright
import asyncio
import pandas as pd
# Profile's uuid from Octo
PROFILE_UUID = "UUID_SHOULD_BE_HERE"
# searching request
SEARCH_REQUEST = "fashion"
async def main():
async with async_playwright() as p:
async with httpx.AsyncClient() as client:
response = await client.post(
'http://127.0.0.1:58888/api/profiles/start',
json={
'uuid': PROFILE_UUID,
'headless': False,
'debug_port': True
}
)
if not response.is_success:
print(f'Start response is not successful: {response.json()}')
return
start_response = response.json()
ws_endpoint = start_response.get('ws_endpoint')
browser = await p.chromium.connect_over_cdp(ws_endpoint)
page = browser.contexts[0].pages[0]
# Opening Amazon
await page.goto(f'https://www.amazon.com/s?k={SEARCH_REQUEST}')
# Extract information
results = []
listings = await page.query_selector_all('div.a-section.a-spacing-small')
for listing in listings:
result = {}
# Product name
name_element = await listing.query_selector('h2.a-size-mini > a > span')
result['product_name'] = await name_element.inner_text() if name_element else 'N/A'
# Rating
rating_element = await listing.query_selector('span[aria-label*="out of 5 stars"] > span.a-size-base')
result['rating'] = (await rating_element.inner_text())[0:3] if rating_element else 'N/A'
# Number of reviews
reviews_element = await listing.query_selector('span[aria-label*="stars"] + span > a > span')
result['number_of_reviews'] = await reviews_element.inner_text() if reviews_element else 'N/A'
# Price
price_element = await listing.query_selector('span.a-price > span.a-offscreen')
result['price'] = await price_element.inner_text() if price_element else 'N/A'
if(result['product_name']=='N/A' and result['rating']=='N/A' and result['number_of_reviews']=='N/A' and result['price']=='N/A'):
pass
else:
results.append(result)
# Close browser
await browser.close()
return results
# Run the scraper and save results to a CSV file
results = asyncio.run(main())
df = pd.DataFrame(results)
df.to_csv('amazon_products_listings.csv', index=False)
Запустив браузер и перейдя на целевой URL-адрес Amazon, вы извлечете информацию о товаре: его название, рейтинг, количество отзывов и цену. После итераций по каждому объявлению на странице вы можете отфильтровать объявления, в которых нет данных. Скрипт пометит их как «N/A». Результаты поиска сохраняются в Pandas DataFrame, а затем экспортируются в CSV-файл amazon_products_listings.csv.
Кроме антидетекта, качественных прокси и продуманного скрипта с имитацией человеческого поведения, также может быть полезным авторешатель CAPTCHA. Для этого подойдут OSS-решения, сервисы по ручному решению вроде 2captcha и anti-captcha и автоматические солверы, такие как Capmonster.
Фингерпринтинг, наряду с другими техниками анти-скрейпинга, такими как рейт-лимитинг, геолокация, WAF, челленджи и капчи, существует для защиты сайтов от автоматизированного взаимодействия с ними. Антидетект-браузер с качественной системой подмены фингерпринтов помогает обходить системы защиты сайтов. В результате повышается эффективность веб-скрейпинга: сбор данных становится более быстрым и надежным.
Роль антидетект-браузеров в обходе систем безопасности сайтов состоит в подмене цифрового отпечатка. С помощью антидетекта можно создавать множество браузерных профилей — виртуальных копий браузера, изолированных друг от друга и обладающих своим собственным набором характеристик и настроек: куки, историей браузера, расширениями, прокси, параметрами фингерпринта. Каждый браузерный профиль выглядит для систем безопасности сайтов как отдельный пользователь.
В Octo Browser вся необходимая документация для начала работы находится здесь, а подробные инструкции по работе с API можно найти здесь.
При прочих равных условиях на длинной дистанции использование антидетект-браузера способствует экономии бюджета и снижению себестоимости скрейпинга.
Воспользуйтесь Python для эффективного поиска товаров, отзывов, описаний и цен на Amazon. Написание кода может потребовать некоторого времени и усилий, но результаты превзойдут все ожидания. Для того, чтобы избежать внимания систем безопасности, необходимо имитировать естественное поведение пользователя, использовать сторонние IP-адреса и регулярно менять цифровой отпечаток. Специализированные инструменты, такие как антидетект-браузеры и прокси-серверы, позволят вам ротировать отпечатки браузера и IP-адреса, чтобы преодолеть ограничения и увеличить скорость скрейпинга.