انتقل إلى المحتوى

كيفية كشط Walmart.com باستخدام Python (دليل خطوة بخطوة)

يمكن أن يوفر تجريف Walmart.com بيانات قيمة لأغراض مختلفة. في هذا الدليل ، سنوجهك خلال عملية تجريف Walmart.com بكفاءة وفعالية.

عندما يتعلق الأمر بتجريد الويب من Walmart.com باستخدام Python ، فهناك العديد من المكتبات المتاحة التي يمكن أن تسهل العملية. فيما يلي بعض مكتبات تجريف ويب Python الشائعة التي يمكنك استخدامها لكشط البيانات من موقع Walmart.com:

  • حساء جميل: Beautiful Soup هي مكتبة مستخدمة على نطاق واسع لكشط الويب في Python. يوفر طرقًا ملائمة لتحليل مستندات HTML و XML ، مما يجعل من السهل استخراج البيانات من صفحات الويب. يمكنك استخدام حساء جميل مع مكتبات أخرى لكشط البيانات من موقع Walmart.com.
  • الطلبات: تُستخدم مكتبة الطلبات بشكل شائع لإجراء طلبات HTTP في Python. يسمح لك بإرسال طلبات HTTP إلى Walmart.com واسترداد محتوى HTML لصفحات الويب. باستخدام الطلبات ، يمكنك جلب صفحات الويب الضرورية ثم استخدام مكتبات أخرى مثل Beautiful Soup لتحليل البيانات.
  • عنصر السيلينيوم: السيلينيوم هي مكتبة كشط ويب قوية تتيح التشغيل الآلي للمتصفح. يمكن استخدامه للتفاعل مع صفحات الويب ديناميكيًا ، مما يجعله مفيدًا لكشط مواقع الويب بوظائف تستند إلى JavaScript. يسمح لك السيلينيوم بأتمتة المهام مثل النقر فوق الأزرار وملء النماذج والتنقل عبر الصفحات ، مما قد يكون مفيدًا لإلغاء موقع Walmart.com.
  • Scrapy: Scrapy هو إطار عمل قوي لكشط الويب في Python. يوفر نظامًا أساسيًا عالي المستوى وفعال وقابل للتوسيع لكشط البيانات من مواقع الويب. يبسط Scrapy عملية بناء برامج زحف الويب ، مما يسمح لك بكشط البيانات من Walmart.com على نطاق واسع.
  • LXML: LXML هي مكتبة Python توفر واجهة سريعة وسهلة الاستخدام لتحليل مستندات XML و HTML. يتم استخدامه بشكل شائع مع الطلبات والحساء الجميل لكشط البيانات من مواقع الويب. يوفر LXML دعم XPath ، والذي يسمح لك باستخراج عناصر محددة من بنية HTML الخاصة بـ Walmart.com.

توفر هذه المكتبات وظائف ومستويات مختلفة من المرونة ، بحيث يمكنك اختيار أفضل ما يناسب احتياجاتك الخاصة بالتخلص من Walmart.com. ضع في اعتبارك استكشاف وثائقهم وأمثلةهم لفهم كيفية الاستفادة منها بفعالية في مشروع الكشط

كيفية كشط Walmart.com

الخطوة 1: إنشاء قائمة بعناوين URL لمنتج Walmart

عند تجريف Walmart.com ، فإن الخطوة الأولى هي إنشاء قائمة بعناوين URL للمنتج. يمكن القيام بذلك عن طريق استخدام صفحة بحث Walmart ، والتي تعرض ما يصل إلى 40 منتجًا في كل صفحة. لإنشاء قائمة عناوين URL للمنتج ، اتبع الخطوات التالية:

تتمثل الخطوة الأولى في حذف موقع Walmart.com في تصميم زاحف ويب يقوم بإنشاء قائمة بعناوين URL الخاصة بالمنتج لكشطها. أسهل طريقة للقيام بذلك هي استخدام صفحة Walmart Search ، والتي تعرض ما يصل إلى 40 منتجًا لكل صفحة. يحتوي عنوان URL لصفحة البحث على العديد من المعلمات التي يمكنك تخصيصها:

  • q هو استعلام البحث ، مثل ipad.
  • sort هو ترتيب فرز الاستعلام ، مثل best_seller.
  • page هو رقم الصفحة ، مثل 1.

لاحظ أن Walmart لا يعرض سوى 25 صفحة كحد أقصى. إذا كنت تريد المزيد من النتائج لاستعلامك ، فيمكنك أن تكون أكثر تحديدًا في مصطلحات البحث أو تغيير معلمة الفرز.

قائمة المنتجات التي تم إرجاعها في الرد متاحة كبيانات JSON مخفية على الصفحة. تحتاج فقط إلى استخراج JSON blob في ملف <script id="__NEXT_DATA__" type="application/json"> وضع علامة عليها وتحليلها في JSON. يحتوي رد JSON هذا على البيانات التي تبحث عنها.

فيما يلي مثال على برنامج نصي بلغة Python يسترد جميع المنتجات لكلمة رئيسية معينة من جميع الصفحات البالغ عددها 25:

استيراد طلبات استيراد json من bs4 استيراد BeautifulSoup من urllib.parse استيراد urlencode def create_walmart_product_url (منتج): إرجاع 'https://www.walmart.com' + product.get ('canonicalUrl'، '') .split ('؟' ) [0] headers = {"User-Agent": "Mozilla / 5.0 (iPad؛ CPU OS 12_2 مثل Mac OS X) AppleWebKit / 605.1.15 (KHTML ، مثل Gecko) Mobile / 15E148"} product_url_list = [] الكلمة الرئيسية = 'ipad' للصفحة في النطاق (1 ، 26): try: payload = {'q': keyword، 'sort': 'best_seller'، 'page': page، 'affinityOverride': 'default'} walmart_search_url = 'https : //www.walmart.com/search؟ ' + urlencode (payload) response = request.get (walmart_search_url، headers = headers) if response.status_code == 200: html_response = response.text soup = BeautifulSoup (html_response، "html.parser") script_tag = soup.find ("البرنامج النصي "، {" id ":" __NEXT_DATA__ "}) إذا لم يكن script_tag بلا: json_blob = json.loads (script_tag.get_text ()) product_list = json_blob [" props "] [" pageProps "] [" initialData "] [" searchResult "] [" itemStacks "] [0] [" items "] product_urls = [create_walmart_product_url (منتج) للمنتج في product_list] product_url_list.extend (product_urls) إذا كانت len (product_urls) == 0: استراحة باستثناء الاستثناء مثل e: print ("خطأ" ، هـ) طباعة (product_url_list)

سيكون الإخراج عبارة عن قائمة عناوين URL للمنتج.

الخطوة 2: كشط بيانات منتج Walmart

يُرجع طلب Walmart Search أيضًا معلومات أكثر بكثير من مجرد عناوين URL للمنتج. يمكنك الحصول على اسم المنتج والسعر وعنوان URL للصورة والتقييم وعدد المراجعات من JSON blob أيضًا. اعتمادًا على البيانات التي تحتاجها ، قد لا تحتاج إلى طلب كل صفحة منتج لأنه يمكنك الحصول على البيانات من نتائج البحث.

لاستخراج بيانات المنتج من القائمة ، يمكنك استخدام وظيفة مثل هذه:

def extract_product_data (المنتج): إرجاع {'url': create_walmart_url (المنتج) ، 'الاسم': استنادًا إلى المعلومات التي وجدتها ، إليك نص Python النصي الذي يلغي Walmart.com للحصول على معلومات المنتج. ينشئ البرنامج النصي قائمة بعناوين URL للمنتج ثم يستخرج بيانات المنتج من كل عنوان URL. يرجى ملاحظة أن هذا البرنامج النصي يعمل فقط لما يصل إلى 25 صفحة من نتائج البحث لكل استعلام بسبب قيود وول مارت. إذا كنت بحاجة إلى استخراج المزيد من البيانات ، فستحتاج إلى تعديل استعلاماتك أو تغيير معلمات الفرز. إليك نص Python النصي: `` استورد python استيراد طلبات json من bs4 استيراد BeautifulSoup من urllib.parse استيراد urlencode def create_walmart_product_url (منتج): إرجاع 'https://www.walmart.com' + product.get ('canonicalUrl' ، '') .split ('؟') [0] def extract_product_data (product): return {'url': create_walmart_product_url (product)، 'name': product.get ('name'، '')، 'description': product.get ('description'، '')، 'image_url': product.get ('image'، '')، 'average_rating': product ['rating']. get ('averageRating')، 'number_reviews': product ['rating']. get ('numberOfReviews')،} headers = {"User-Agent": "Mozilla / 5.0 (iPad؛ CPU OS 12_2 مثل Mac OS X) AppleWebKit / 605.1.15 (KHTML ، مثل Gecko) Mobile / 15E148 "} product_url_list = [] product_data_list = [] # كلمة بحث Walmart Keyword = 'ipad' # Loop عبر صفحات Walmart حتى عدم وجود المزيد من المنتجات للصفحة في النطاق (1 ، 5): جرِّب: payload = {'q': الكلمة الرئيسية ، "الترتيب": "أفضل_ بائع" ، "الصفحة": الصفحة ، "التقارب": "افتراضي"} walmart_search_url = "https://www.walmart.com/search؟" + urlencode (payload) response = request.get (walmart_search_url، headers = headers) if response.status_code == 200: html_response = response.text soup = BeautifulSoup (html_response، "html.parser") script_tag = soup.find ("البرنامج النصي "، {" id ":" __NEXT_DATA__ "}) إذا لم يكن script_tag بلا: json_blob = json.loads (script_tag.get_text ()) product_list = json_blob [" props "] [" pageProps "] [" initialData "] [" searchResult "] [" itemStacks "] [0] [" items "] product_urls = [create_walmart_product_url (منتج) للمنتج في قائمة_المنتج] product_url_list.extend (product_urls) product_data = [extract_product_data (المنتج) للمنتج في قائمة_المنتج] product_data_list.extend ( product_data) if len (product_urls) == 0: فاصل باستثناء الاستثناء مثل e: print ('Error'، e) print (product_url_list) print (product_data_list)

سينتج هذا البرنامج النصي قائمتين. product_url_list ستحتوي على عناوين URL لكل منتج ، و product_data_list ستحتوي على قواميس تحتوي على بيانات المنتج (الاسم والوصف وعنوان URL للصورة ومتوسط ​​التقييم وعدد المراجعات) لكل منتج.

وول مارت حماية ضد البوت

عند إلغاء موقع Walmart.com ، من الضروري مراعاة تدابير الحماية ضد الروبوتات المعمول بها. يستخدم Walmart تقنيات مختلفة لمنع التجريف الآلي ، بما في ذلك CAPTCHA ، والحد من المعدل ، والتتبع المستند إلى الجلسة. للتغلب على هذه التحديات ، يمكنك استخدام استراتيجيات مثل:

أسئلة وأجوبة: أسئلة متكررة

يثير اقتلاع موقع ويب مثل Walmart.com مخاوف قانونية. في حين أن كشط البيانات المتاحة للجمهور قد يكون مسموحًا به بشكل عام ، فمن الأهمية بمكان مراجعة شروط خدمة Walmart والتشاور مع المهنيين القانونيين لضمان الامتثال للقوانين المعمول بها.

س 2. كم مرة يجب أن أكشط موقع Walmart.com؟

يجب تحديد تواتر الكشط حسب طبيعة مشروعك وسياسات Walmart. يمكن أن يؤدي التجريف المفرط إلى إجهاد خوادم Walmart وانتهاك شروط الخدمة الخاصة بهم. ضع في اعتبارك تنفيذ فترات زمنية معقولة بين جلسات الكشط لتجنب التعطيل أو العقوبات المحتملة.

س 3. هل يمكنني كشط مراجعات المنتج من موقع Walmart.com؟

يمكن أن يوفر كشط مراجعات المنتج رؤى قيمة. ومع ذلك ، من المهم احترام الخصوصية وحقوق الملكية الفكرية للمستخدمين والالتزام بسياسات وول مارت. راجع شروط خدمة Walmart واستشر المهنيين القانونيين لضمان الامتثال عند إلغاء مراجعات المنتج.

س 4. كيف يمكنني التعامل مع التغييرات في هيكل موقع Walmart؟

يخضع موقع Walmart.com للتحديثات وإعادة التصميم من حين لآخر ، مما قد يؤثر على بنية صفحات الويب الخاصة بهم. للتعامل مع هذه التغييرات ، قم بمراقبة وتكييف كود الكشط بانتظام. فيما يلي بعض الاستراتيجيات للتعامل مع تغييرات بنية موقع الويب:

  • الحفاظ على إطار عمل كشط قوي: قم ببناء إطار تجريف معياري ومرن يمكنه استيعاب التغييرات بسهولة. افصل منطق الكشط الخاص بك عن الكود الخاص بموقع الويب ، مما يسهل التحديث عند الحاجة.
  • مراقبة التغييرات: تحقق بانتظام من موقع Walmart على الويب بحثًا عن أي تغييرات ملحوظة في بنية HTML أو فئات CSS المستخدمة لمعلومات المنتج. يمكن القيام بذلك يدويًا أو عن طريق تنفيذ البرامج النصية للمراقبة الآلية التي تنبهك إلى أي تعديلات.
  • استخدم محددات CSS و XPath: بدلاً من الاعتماد على معرفات أو فئات معينة لعنصر HTML ، استخدم محددات CSS أو تعبيرات XPath لاستخراج البيانات. هذه الأساليب أكثر مرونة في مواجهة التغييرات في الهيكل الأساسي للموقع.
  • معالجة الأخطاء بأمان: تطبيق آليات معالجة الأخطاء للتعامل مع التغييرات غير المتوقعة في بنية موقع الويب. يمكن أن يتضمن ذلك خيارات احتياطية أو منطق إعادة المحاولة أو تسجيل الأخطاء للمساعدة في تحديد ومعالجة أي مشكلات تنشأ.
  • ابق على اطلاع دائم بواجهات برمجة التطبيقات: إذا كان ذلك متاحًا ، ففكر في استخدام واجهات برمجة التطبيقات الرسمية لـ Walmart للوصول إلى بيانات المنتج. توفر واجهات برمجة التطبيقات (API) طريقة أكثر استقرارًا وتنظيمًا لاسترداد المعلومات ، حيث إنها مصممة خصيصًا لاستخدامها من قبل المطورين وهي أقل عرضة للتغييرات المتكررة.

تذكر أن تجريف مواقع الويب عملية متطورة ، وتحتاج إلى التكيف مع التغييرات بمرور الوقت. ستساعد الصيانة والمراقبة المنتظمة في ضمان بقاء كود الكشط الخاص بك فعالًا ودقيقًا.


وفي الختام

يمكن أن يوفر تجريف Walmart.com بيانات قيمة لأغراض مختلفة ، ولكن من المهم أن تضع في اعتبارك الاعتبارات القانونية وسياسات Walmart. باتباع الخطوات الموضحة في هذا الدليل والبقاء متيقظًا للتغييرات ، يمكنك كشط Walmart.com بنجاح واسترداد بيانات المنتج المطلوبة لمشاريعك.

الوسوم (تاج):

الانضمام إلى محادثة

لن يتم نشر عنوان بريدك الإلكتروني. الحقول المشار إليها إلزامية *