इसलिए मैंने 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
Thomas DeGreve 30 अक्टूबर 2018, 22:54

1 उत्तर

सबसे बढ़िया उत्तर

जब आप urllib (या requests HTTP लाइब्रेरी) से कोई पेज डाउनलोड करते हैं तो वह मूल HTML स्रोत फ़ाइल डाउनलोड करता है।

प्रारंभ में वर्ग नाम 'जहाज-सूचीकरण' के साथ केवल sinlge टैग है क्योंकि वह टैग स्रोत पृष्ठ के साथ आता है। लेकिन एक बार जब आप नीचे स्क्रॉल करते हैं, तो पृष्ठ अतिरिक्त <ul class='ships-listing'> उत्पन्न करता है और ये तत्व जावास्क्रिप्ट द्वारा उत्पन्न होते हैं।

enter image description here

इसलिए जब आप urllib का उपयोग करके कोई पृष्ठ डाउनलोड करते हैं, तो डाउनलोड की गई सामग्री में केवल मूल स्रोत पृष्ठ होता है (आप इसे ब्राउज़र में दृश्य-स्रोत विकल्प द्वारा देख सकते हैं)।

1
Tharindu 31 अक्टूबर 2018, 05:38