تصور نفسك كمستكشف مغامر، يغوص برأسه في عالم الأمازون الشاسع والغامض - ليس الغابات المطيرة، بل عملاق البيع بالتجزئة عبر الإنترنت. مع كل نقرة، تكتشف كنوزًا لا تقدر بثمن، وتتعمق أكثر في منطقة البيانات المجهولة.
في هذه الرحلة الاستكشافية المثيرة، نقدم دليلًا خطوة بخطوة للتنقل في الغابة الرقمية الكثيفة لتجميع الويب من أمازون. استعد للشروع في رحلة لا مثيل لها، مسلحًا بنصائح وحيل الخبراء لاستخراج المعلومات القيمة بدقة لا مثيل لها.
جدول المحتويات
- ما هي البيانات لكشط من الأمازون
- بعض المتطلبات الأساسية
- الإعداد للتقشير
- كشط معلومات المنتج الأمازون
- كيفية كشط صفحات متعددة على الأمازون
- تجريف الأمازون: الأسئلة الشائعة
- خاتمة
لذا، اجمع شجاعتك، وارتدِ حذائك الافتراضي، ودعنا نبدأ مغامرتنا القائمة على البيانات معًا!
ما هي البيانات لكشط من الأمازون
هناك العديد من نقاط البيانات المرتبطة بمنتج أمازون، ولكن العناصر الأساسية التي يجب التركيز عليها عند استخراج البيانات تشمل ما يلي:
- عنوان المنتج
- يكلف
- المدخرات (عند الاقتضاء)
- ملخص العنصر
- قائمة الميزات المرتبطة (إن وجدت)
- درجة المراجعة
- صور المنتج
على الرغم من أن هذه هي الجوانب الأساسية التي يجب مراعاتها عند استخراج أحد منتجات أمازون، فمن المهم ملاحظة أن المعلومات التي تستخرجها قد تختلف وفقًا لأهدافك المحددة.
بعض المتطلبات الأساسية
لتحضير الحساء، نحتاج إلى المكونات الصحيحة. وبالمثل، تتطلب أداة استخراج الويب الجديدة لدينا مكونات محددة.
- بايثون - سهولة الاستخدام ومجموعة المكتبات الواسعة تجعل من Python الخيار الأفضل لتجميع الويب. إذا لم يكن مثبتًا بالفعل، فارجع إلى هذا الدليل.
- حساء جميل - هذه واحدة من العديد من مكتبات تجريف الويب المتاحة لـ Python. إن بساطته واستخدامه النظيف يجعله خيارًا شائعًا لتجريد الويب. بعد تثبيت Python بنجاح، يمكنك تثبيت Beautiful Soup عن طريق تشغيل: pip install bs4
- الفهم الأساسي لعلامات HTML - راجع هذا البرنامج التعليمي لاكتساب المعرفة اللازمة حول علامات HTML.
- متصفح الإنترنت — نظرًا لأننا نحتاج إلى تصفية الكثير من المعلومات غير ذات الصلة من موقع الويب، فإن معرفات وعلامات محددة مطلوبة لأغراض التصفية. يعد متصفح الويب مثل Google Chrome أو Mozilla Firefox مفيدًا لتحديد هذه العلامات.
الإعداد للتقشير
للبدء، تأكد من تثبيت Python. إذا لم يكن لديك Python 3.8 أو إصدار أحدث، فتفضل بزيارة python.org لتنزيل أحدث إصدار وتثبيته.
بعد ذلك، قم بإنشاء دليل لتخزين ملفات كود تجريف الويب الخاصة بك لـ Amazon. من الجيد عمومًا إعداد بيئة افتراضية لمشروعك.
استخدم الأوامر التالية لإنشاء وتنشيط بيئة افتراضية على نظامي التشغيل macOS وLinux:
$ python3 -m venv .env
$ source .env/bin/activate
بالنسبة لمستخدمي Windows، ستكون الأوامر مختلفة قليلاً:
d:amazon>python -m venv .env
d:amazon>.envscriptsactivate
حان الوقت الآن لتثبيت حزم Python الضرورية.
ستحتاج إلى حزم لمهمتين رئيسيتين: الحصول على HTML وتحليله لاستخراج البيانات ذات الصلة.
مكتبة الطلبات هي مكتبة Python تابعة لجهة خارجية تستخدم على نطاق واسع لتقديم طلبات HTTP. فهو يوفر واجهة واضحة وسهلة الاستخدام لتقديم طلبات HTTP إلى خوادم الويب وتلقي الردود. ربما تكون المكتبة الأكثر شهرة في تجريف الويب.
ومع ذلك، فإن مكتبة الطلبات لها قيود: فهي تقوم بإرجاع استجابة HTML كسلسلة، مما قد يكون من الصعب البحث عن عناصر محددة مثل إدراج الأسعار عند كتابة تعليمات برمجية لاستخلاص البيانات من الويب.
وهنا يأتي دور Beautiful Soup. Beautiful Soup هي مكتبة Python مصممة لاستخراج البيانات من الويب والتي تستخرج البيانات من ملفات HTML وXML. يسمح لك باسترداد المعلومات من صفحة ويب عن طريق البحث عن العلامات أو السمات أو نص محدد.
لتثبيت كلتا المكتبتين، استخدم الأمر التالي:
$ python3 -m pip install requests beautifulsoup4
بالنسبة لمستخدمي Windows، استبدل "python3" بـ "python"، مع الحفاظ على بقية الأمر كما هو:
d:amazon>python -m pip install requests beautifulsoup4
لاحظ أننا نقوم بتثبيت الإصدار 4 من مكتبة Beautiful Soup.
الآن دعونا نختبر مكتبة استخراج الطلبات. قم بإنشاء ملف جديد يسمى amazon.py وأدخل الكود التالي:
import requests
url = 'https://www.amazon.com/Bose-QuietComfort-45-Bluetooth-Canceling-Headphones/dp/B098FKXT8L'
response = requests.get(url)
print(response.text)
احفظ الملف وقم بتشغيله من المحطة.
$ python3 amazon.py
في معظم الحالات، لن تتمكن من عرض HTML المطلوب. ستقوم أمازون بحظر الطلب، وستتلقى الرد التالي:
To discuss automated access to Amazon data please contact [email protected].
إذا قمت بطباعة Response.status_code، فسترى أنك تتلقى خطأ 503 بدلاً من رمز النجاح 200.
تعرف أمازون أن هذا الطلب لم يأتي من المتصفح وتقوم بحظره. هذه الممارسة شائعة بين العديد من المواقع. قد تقوم أمازون بحظر طلباتك وإرجاع رمز خطأ يبدأ بـ 500 أو حتى 400 في بعض الأحيان.
الحل البسيط هو إرسال رؤوس مع طلبك تحاكي تلك التي يرسلها المتصفح.
في بعض الأحيان، يكون إرسال وكيل المستخدم فقط كافيًا. وفي أحيان أخرى، قد تحتاج إلى إرسال رؤوس إضافية، مثل رأس لغة القبول.
للعثور على وكيل المستخدم الذي أرسله متصفحك، اضغط على F12، وافتح علامة التبويب "الشبكة"، وأعد تحميل الصفحة. حدد الطلب الأول وافحص رؤوس الطلب.
انسخ وكيل المستخدم هذا وقم بإنشاء قاموس للرؤوس، مثل هذا المثال مع وكيل المستخدم ورؤوس لغة القبول:
custom_headers = { '
user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36',
'accept-language': 'en-GB,en;q=0.9',
}
يمكنك بعد ذلك إرسال هذا القاموس كمعلمة اختيارية في طريقة get:
response = requests.get(url, headers=custom_headers
كشط معلومات المنتج الأمازون
في عملية استخراج منتجات أمازون من الويب، ستتعامل عادةً مع نوعين من الصفحات: صفحة الفئة وصفحة تفاصيل المنتج.
على سبيل المثال، قم بزيارة https://www.amazon.com/b?node=12097479011 أو ابحث عن سماعات فوق الأذن على أمازون. تُعرف الصفحة التي تعرض نتائج البحث بصفحة الفئة.
تعرض صفحة الفئة عنوان المنتج، وصورة المنتج، وتقييم المنتج، وسعر المنتج، والأهم من ذلك، صفحة عناوين URL للمنتج. للوصول إلى مزيد من المعلومات، مثل أوصاف المنتج، يجب عليك زيارة صفحة تفاصيل المنتج.
دعونا نحلل هيكل صفحة تفاصيل المنتج.
افتح عنوان URL للمنتج، مثل https://www.amazon.com/Bose-QuietComfort-45-Bluetooth-Canceling-Headphones/dp/B098FKXT8Lباستخدام Chrome أو أي متصفح حديث آخر. انقر بزر الماوس الأيمن فوق عنوان المنتج واختر فحص. سيتم تمييز علامة HTML لعنوان المنتج.
ستلاحظ أنها علامة امتداد مع تعيين سمة المعرف الخاصة بها على "productTitle".
وبالمثل، انقر بزر الماوس الأيمن على السعر وحدد فحص لعرض علامة HTML للسعر.
مكون الدولار من السعر موجود في علامة نطاق مع الفئة "a-price-whole"، في حين أن مكون السنتات موجود في علامة نطاق أخرى مع فئة "a-price-fraction".
يمكنك أيضًا تحديد موقع التقييم والصورة والوصف بنفس الطريقة.
بمجرد جمع هذه المعلومات، أضف الأسطر التالية إلى الكود الموجود:
response = requests.get(url, headers=custom_headers)
soup = BeautifulSoup(response.text, 'lxml')
يقدم Beautiful Soup طريقة مميزة لاختيار العلامات باستخدام طرق البحث. كما أنه يدعم محددات CSS كبديل. يمكنك استخدام أي من الطريقتين لتحقيق نفس النتيجة. في هذا البرنامج التعليمي، سوف نستخدم محددات CSS، وهي طريقة عالمية لاختيار العناصر. تتوافق محددات CSS مع جميع أدوات تجريف الويب تقريبًا لاستخراج معلومات منتج Amazon.
أنت الآن جاهز لاستخدام كائن Soup للاستعلام عن معلومات محددة.
استخراج اسم المنتج
تم العثور على اسم المنتج أو عنوانه في عنصر الامتداد بالمعرف "productTitle". يعد تحديد العناصر باستخدام معرفات فريدة أمرًا بسيطًا.
خذ بعين الاعتبار الكود التالي كمثال:
title_element = soup.select_one('#productTitle')
نقوم بتمرير محدد CSS إلى طريقة Select_one، والتي تقوم بإرجاع مثيل العنصر.
لاستخراج المعلومات من النص، استخدم سمة النص.
title = title_element.text
عند الطباعة، قد تلاحظ بعض المسافات البيضاء. لحل هذه المشكلة، قم بإضافة استدعاء دالة .strip() كما يلي:
title = title_element.text.strip()
استخراج تقييمات المنتج
يتطلب الحصول على تقييمات منتجات أمازون بعض الجهد الإضافي.
أولاً، قم بإنشاء محدد للتقييم:
#acrPopover
بعد ذلك، استخدم العبارة التالية لتحديد العنصر الذي يحتوي على التصنيف:
rating_element = soup.select_one('#acrPopover')
لاحظ أن قيمة التصنيف الفعلية موجودة ضمن سمة العنوان:
rating_text = rating_element.attrs.get('title')
print(rating_text)
# prints '4.6 out of 5 stars'
وأخيراً استخدم طريقة الاستبدال للحصول على التصنيف العددي:
rating = rating_text.replace('out of 5 stars', '')
استخراج سعر المنتج
يمكن العثور على سعر المنتج في موقعين — أسفل عنوان المنتج وداخل مربع الشراء الآن.
يمكن استخدام أي من هاتين العلامتين لاستخلاص أسعار منتجات أمازون.
قم بإنشاء محدد CSS للسعر:
#price_inside_buybox
قم بتمرير محدد CSS هذا إلى طريقة Select_one الخاصة بـ BeautifulSoup مثل هذا:
price_element = soup.select_one('#price_inside_buybox')
الآن يمكنك طباعة السعر:
print(price_element.text)
استخراج الصورة
لاستخراج الصورة الافتراضية، استخدم محدد CSS #landingImage. باستخدام هذه المعلومات، يمكنك كتابة أسطر التعليمات البرمجية التالية للحصول على عنوان URL للصورة من السمة src:
image_element = soup.select_one('#landingImage')
image = image_element.attrs.get('src')
استخراج وصف المنتج
الخطوة التالية في استخراج بيانات منتج أمازون هي الحصول على وصف المنتج.
تظل العملية متسقة — قم بإنشاء محدد CSS واستخدم طريقة Select_one.
محدد CSS للوصف هو:
#productDescription
وهذا يسمح لنا باستخراج العنصر على النحو التالي:
description_element = soup.select_one('#productDescription')
print(description_element.text)
التعامل مع قائمة المنتجات
لقد استكشفنا استخراج معلومات المنتج، ولكنك ستحتاج إلى البدء بقائمة المنتجات أو صفحات الفئات للوصول إلى بيانات المنتج.
على سبيل المثال، https://www.amazon.com/b?node=12097479011 هي صفحة فئة سماعات الرأس فوق الأذن.
إذا قمت بفحص هذه الصفحة، فسترى أن جميع المنتجات مضمنة في div الذي له سمة فريدة [data-asin]. ضمن هذا القسم، تكون جميع روابط المنتجات موجودة في علامة h2.
باستخدام هذه المعلومات، يكون محدد CSS هو:
[data-asin] h2 a
يمكنك قراءة سمة href لهذا المحدد وتشغيل حلقة. ومع ذلك، تذكر أن الروابط ستكون نسبية. ستحتاج إلى استخدام التابع urljoin لتحليل هذه الروابط.
from urllib.parse import urljoin
...
def parse_listing(listing_url):
…
link_elements = soup_search.select("[data-asin] h2 a")
page_data = []
for link in link_elements:
full_url = urljoin(search_url, link.attrs.get("href"))
product_info = get_product_info(full_url)
page_data.append(product_info)
التعامل مع ترقيم الصفحات
رابط الصفحة التالية موجود في رابط يحتوي على النص "التالي". يمكنك البحث عن هذا الرابط باستخدام عامل تشغيل CSS كما يلي:
next_page_el = soup.select_one('a:contains("Next")')
if next_page_el:
next_page_url = next_page_el.attrs.get('href')
next_page_url = urljoin(listing_url, next_page_url)
تصدير بيانات أمازون
يتم إرجاع البيانات المسروقة كقاموس عن قصد. يمكنك إنشاء قائمة تحتوي على جميع المنتجات المسروقة.
def parse_listing(listing_url):
...
page_data = [] for link in link_elements:
...
product_info = get_product_info(full_url)
page_data.append(product_info)
يمكنك بعد ذلك استخدام page_data لإنشاء كائن Pandas DataFrame:
df = pd.DataFrame(page_data)
df.to_csv('headphones.csv', index = False)
كيفية كشط صفحات متعددة على الأمازون
يمكن أن يؤدي نسخ صفحات متعددة على أمازون إلى تعزيز فعالية مشروع تجريف الويب الخاص بك من خلال توفير مجموعة بيانات أوسع لتحليلها. عند استهداف صفحات متعددة، ستحتاج إلى مراعاة ترقيم الصفحات، وهي عملية تقسيم المحتوى عبر عدة صفحات.
هنا 6 نقاط رئيسية يجب وضعها في الاعتبار عند نسخ صفحات متعددة على أمازون:
- تحديد نمط ترقيم الصفحات: أولاً، قم بتحليل بنية عنوان URL للفئة أو صفحات نتائج البحث لفهم كيفية قيام أمازون بترقيم محتواها. يمكن أن يكون هذا معلمة استعلام (على سبيل المثال، "?page=2") أو معرفًا فريدًا مضمنًا في عنوان URL.
- استخرج رابط الصفحة "التالي": حدد موقع العنصر (عادةً علامة ربط) الذي يحتوي على رابط الصفحة التالية. استخدم محدد CSS المناسب أو طريقة Beautiful Soup لاستخراج سمة href لهذا العنصر، وهو عنوان URL للصفحة التالية.
- تحويل عناوين URL النسبية إلى عناوين URL المطلقة: نظرًا لأن عناوين URL المستخرجة قد تكون نسبية، استخدم ملف
urljoin
وظيفة منurllib.parse
مكتبة لتحويلها إلى عناوين URL مطلقة. - إنشاء حلقة: قم بتنفيذ حلقة تتكرر عبر الصفحات، وتستخرج البيانات المطلوبة من كل صفحة. يجب أن تستمر الحلقة حتى لا يتبقى أي صفحات أخرى، وهو ما يمكن تحديده عن طريق التحقق من وجود رابط الصفحة "التالي" في الصفحة الحالية.
- إضافة تأخيرات بين الطلبات: لتجنب إرباك خادم أمازون أو تفعيل إجراءات مكافحة الروبوتات، قم بتقديم تأخيرات بين الطلبات التي تستخدم
time.sleep()
وظيفة منtime
مكتبة. اضبط مدة التأخير لمحاكاة سلوك التصفح البشري. - التعامل مع اختبارات CAPTCHA والكتل: إذا واجهت اختبارات CAPTCHA أو عمليات حظر IP أثناء نسخ صفحات متعددة، ففكر في استخدام الوكلاء لتدوير عناوين IP أو أدوات وخدمات النسخ المخصصة التي يمكنها التعامل مع هذه التحديات تلقائيًا.
ستجد أدناه مقطع فيديو تعليميًا شاملاً على YouTube يرشدك خلال عملية استخراج البيانات من صفحات متعددة على موقع Amazon الإلكتروني. يتعمق البرنامج التعليمي في عالم استخراج البيانات من الويب، مع التركيز على التقنيات التي ستمكنك من جمع معلومات قيمة بكفاءة وفعالية من العديد من صفحات أمازون.
خلال البرنامج التعليمي، يوضح المقدم استخدام الأدوات والمكتبات الأساسية، مثل Python وBeautifulSoup والطلبات، مع تسليط الضوء على أفضل الممارسات لتجنب الحظر أو الكشف بواسطة آليات مكافحة الروبوتات في Amazon. يغطي الفيديو موضوعات أساسية مثل التعامل مع ترقيم الصفحات، وإدارة حدود المعدل، ومحاكاة سلوك التصفح الشبيه بالإنسان.
بالإضافة إلى الإرشادات خطوة بخطوة المتوفرة في الفيديو، يشارك البرنامج التعليمي أيضًا نصائح وحيل مفيدة لتحسين تجربة تجريف الويب لديك. يتضمن ذلك استخدام الوكلاء لتجاوز قيود IP، وتخصيص وكيل المستخدم ورؤوس الطلب بشكل عشوائي، وتنفيذ معالجة مناسبة للأخطاء لضمان عملية استخراج سلسة ودون انقطاع.
تجريف الأمازون: الأسئلة الشائعة
عندما يتعلق الأمر باستخراج البيانات من أمازون، وهي منصة التجارة الإلكترونية الشهيرة، هناك أشياء معينة يجب على المرء أن يضعها في الاعتبار. دعنا نتعمق في الأسئلة المتداولة المتعلقة باستخراج بيانات أمازون.
1. هل من القانوني سرقة أمازون؟
يعد استخراج البيانات المتاحة للعامة من الإنترنت أمرًا قانونيًا، وهذا يشمل حذف بيانات أمازون. يمكنك استخراج معلومات بشكل قانوني مثل تفاصيل المنتج والأوصاف والتقييمات والأسعار. ومع ذلك، عند جمع مراجعات المنتجات، يجب عليك توخي الحذر فيما يتعلق بالبيانات الشخصية وحماية حقوق الطبع والنشر. على سبيل المثال، قد يشكل اسم المراجع وصورته الرمزية بيانات شخصية، بينما قد يكون نص المراجعة محميًا بحقوق الطبع والنشر. توخي الحذر دائمًا واطلب المشورة القانونية عند استخراج مثل هذه البيانات.
2. هل تسمح أمازون بالقشط؟
على الرغم من أن استخلاص البيانات المتاحة للعامة أمر قانوني، إلا أن أمازون تتخذ أحيانًا إجراءات لمنع الاستخلاص. تتضمن هذه الإجراءات طلبات تحديد المعدل، وحظر عناوين IP، واستخدام بصمات المتصفح للكشف عن الروبوتات المستخرجة. تقوم أمازون عادةً بحظر تجريف الويب باستخدام رمز الاستجابة لحالة النجاح 200 OK ويطلب منك تمرير اختبار CAPTCHA أو إظهار رسالة HTTP Error 503 Service Unavailable للاتصال بالمبيعات للحصول على واجهة برمجة تطبيقات مدفوعة.
هناك طرق للتحايل على هذه التدابير، لكن التجريد الأخلاقي للويب يمكن أن يساعد في تجنب تفعيلها في المقام الأول. يتضمن تجريف الويب الأخلاقي الحد من تكرار الطلبات، واستخدام وكلاء المستخدم المناسبين، وتجنب النسخ المفرط الذي قد يؤثر على أداء موقع الويب. من خلال الاستخراج الأخلاقي، يمكنك تقليل خطر الحظر أو مواجهة العواقب القانونية مع الاستمرار في استخراج البيانات المفيدة من أمازون.
3. هل من الأخلاقي استخراج بيانات أمازون؟
يتضمن القشط بشكل أخلاقي احترام الموقع المستهدف. على الرغم من أنه من غير المحتمل أن تقوم بتحميل موقع أمازون الإلكتروني بعدد كبير جدًا من الطلبات، إلا أنه لا يزال يتعين عليك اتباع إرشادات النسخ الأخلاقية. يمكن للتجريف الأخلاقي أن يقلل من مخاطر مواجهة المشكلات القانونية أو التعامل مع تدابير مكافحة الكشط.
4. كيف يمكنني تجنب التعرض للحظر أثناء تجريف أمازون؟
لتجنب التعرض للحظر عند استخراج بيانات أمازون، يجب عليك الحد من معدلات طلبك، وتجنب النسخ خلال ساعات الذروة، واستخدام دوران الوكيل الذكي، واستخدام وكلاء المستخدم والرؤوس المناسبة لتجنب الكشف. بالإضافة إلى ذلك، قم باستخراج البيانات التي تحتاجها فقط واستخدم أدوات استخراج البيانات أو مكتبات استخراج البيانات التابعة لجهات خارجية.
5. ما هي مخاطر كشط الأمازون؟
ينطوي حذف بيانات أمازون على مخاطر محتملة، مثل الإجراءات القانونية وتعليق الحساب. تستخدم أمازون إجراءات مكافحة الروبوتات للكشف عن عمليات الاستخلاص ومنعها، بما في ذلك حظر عنوان IP، وتحديد المعدل، وأخذ بصمات المتصفح. ومع ذلك، من خلال الكشط بشكل أخلاقي، يمكنك التخفيف من هذه المخاطر.
خاتمة
بينما نخرج من المتاهة الساحرة لتجميع الويب من أمازون، فقد حان الوقت لنتوقف لحظة لتقدير المعرفة والمهارات التي لا تقدر بثمن التي جمعناها في هذه الرحلة المبهجة. باستخدام ProxyCompass كدليل موثوق به، تكون قد نجحت في اجتياز التقلبات والمنعطفات المتعلقة باستخراج البيانات التي لا تقدر بثمن من عملاق البيع بالتجزئة. أثناء مغامرتك، واستخدام خبرتك الجديدة ببراعة، تذكر أن الغابة الرقمية لا تتوقف أبدًا عن التطور.
ابق فضوليًا، واستمر في شحذ منجل تجريف الويب الخاص بك، واستمر في التغلب على المشهد المتغير باستمرار لاستخراج البيانات. حتى رحلتنا الجريئة التالية، أيها المستكشف المقدام، أتمنى أن تكون مهامك المستندة إلى البيانات مثمرة ومجزية!