मैं Python और BeautifulSoup bs4 का उपयोग करके Walmart से कुछ डेटा प्राप्त करने का प्रयास कर रहा हूं।

बस मैंने सभी श्रेणी के नाम प्राप्त करने के लिए एक कोड लिखा था और यह काम करता है:

import requests
from bs4 import BeautifulSoup

baseurl = 'https://www.walmart.com/'

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
}

r = requests.get('https://www.walmart.com/all-departments')

soup = BeautifulSoup(r.content, 'lxml')

sub_list = soup.find_all('div', class_='alldeps-DepartmentNav-link-wrapper display-inline-block u-size-1-3')

print(sub_list)

समस्या यह है; जब मैं इस link का उपयोग करके मान प्राप्त करने का प्रयास करता हूं नीचे दिए गए कोड, मुझे खाली परिणाम मिलते हैं:

import requests
from bs4 import BeautifulSoup

baseurl = 'https://www.walmart.com/'

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
}

r = requests.get('https://www.walmart.com/browse/snacks-cookies-chips/cookies/976759_976787_1001391')

soup = BeautifulSoup(r.content, 'lxml')

general_list = soup.find_all('a', class_='product-title-link line-clamp line-clamp-2 truncate-title')

print(general_list)

जैसा कि मैंने पुराने दस्तावेज़ों पर खोज की, मुझे केवल सर्पापी समाधान दिखाई देता है लेकिन यह समाधान का भुगतान किया जाता है तो क्या मूल्य प्राप्त करने का कोई तरीका है? या मुझ से कुछ गलत हो रहा है?

1
Wicaledon 18 अप्रैल 2021, 16:06

1 उत्तर

ऐसा इसलिए है क्योंकि वेबसाइट गतिशील रूप से प्रस्तुत की जाती है। तो उत्पाद को दिखाने से पहले जावास्क्रिप्ट को पहले चलाने की जरूरत है। इसलिए आपको जावास्क्रिप्ट चलाने के लिए कहीं और चाहिए (बीएस ऐसा नहीं कर सकता) सेलेनियम लाइब्रेरी पर एक नज़र डालें।

2
Jules 18 अप्रैल 2021, 13:12