इसलिए मैंने findAll() काम नहीं करने के बारे में सभी प्रश्नों के माध्यम से पढ़ा है जो मुझे मिल सकता है, और उत्तर हमेशा विशेष HTML पार्सर के साथ एक समस्या प्रतीत होता है। मैंने 'lxml' और 'html5lib' के साथ डिफ़ॉल्ट 'html.parser' का उपयोग करके निम्न कोड चलाया है, फिर भी मुझे केवल एक उदाहरण मिल सकता है जब मुझे 14.
import bs4
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
my_url = 'https://robertsspaceindustries.com/pledge/ships'
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()
page_soup = soup(page_html, features = "lxml")
containers = page_soup.findAll("ul", {"class":"ships-listing"})
len(containers)
मैंने HTML कोड की एक तस्वीर पोस्ट करने की कोशिश की, लेकिन मेरे पास पर्याप्त प्रतिष्ठा नहीं है। यहाँ चित्र का लिंक दिया गया है (https://imgur.com/a/cOLO8GO)।
1 उत्तर
जब आप urllib
(या requests
HTTP लाइब्रेरी) से कोई पेज डाउनलोड करते हैं तो वह मूल HTML स्रोत फ़ाइल डाउनलोड करता है।
प्रारंभ में वर्ग नाम 'जहाज-सूचीकरण' के साथ केवल sinlge टैग है क्योंकि वह टैग स्रोत पृष्ठ के साथ आता है। लेकिन एक बार जब आप नीचे स्क्रॉल करते हैं, तो पृष्ठ अतिरिक्त <ul class='ships-listing'>
उत्पन्न करता है और ये तत्व जावास्क्रिप्ट द्वारा उत्पन्न होते हैं।
इसलिए जब आप urllib
का उपयोग करके कोई पृष्ठ डाउनलोड करते हैं, तो डाउनलोड की गई सामग्री में केवल मूल स्रोत पृष्ठ होता है (आप इसे ब्राउज़र में दृश्य-स्रोत विकल्प द्वारा देख सकते हैं)।
संबंधित सवाल
नए सवाल
beautifulsoup
सुंदर सूप HTML / XML पार्स करने के लिए एक पायथन पैकेज है। इस पैकेज का नवीनतम संस्करण 4 संस्करण है, जिसे bs4 के रूप में आयात किया गया है।