मैं पूरे HTML को ratemyprofessors.com से खींचने की कोशिश कर रहा हूं, हालांकि पृष्ठ के निचले भाग में, एक "अधिक रेटिंग लोड करें" बटन है जो आपको अधिक टिप्पणियां देखने की अनुमति देता है।

मैं request.get(url) और beautifulsoup का उपयोग कर रहा हूं, लेकिन यह केवल पहली 20 टिप्पणियां देता है। क्या पृष्ठ वापस आने से पहले सभी टिप्पणियों को लोड करने का कोई तरीका है?

यहां मैं वर्तमान में जो कर रहा हूं वह शीर्ष 20 टिप्पणियां देता है, लेकिन उनमें से सभी नहीं।

    response = requests.get(url)
    soup = BeautifulSoup(response.text, "html.parser")
    comments = []
    for j in soup.findAll('div', attrs={'class': 'Comments__StyledComments-dzzyvm-0 dEfjGB'}):
        comments.append(j.text)
0
David Hafen 18 अप्रैल 2020, 21:07

1 उत्तर

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

सुंदर सूप अधिक गतिशील वेब ऐप्स के लिए रेंडरर की तुलना में स्थिर पृष्ठों के लिए एक HTML पार्सर है।

आप सेलेनियम के माध्यम से एक हेडलेस ब्राउज़र का उपयोग करके पूरा पृष्ठ प्रस्तुत करके और बार-बार अधिक लिंक पर क्लिक करके प्राप्त कर सकते हैं जब तक कि लोड करने के लिए और कुछ न हो।

उदाहरण: सेलेनियम के माध्यम से किसी लिंक पर क्लिक करना

चूंकि आप पहले से ही अनुरोधों का उपयोग कर रहे हैं, एक अन्य विकल्प जो काम कर सकता है वह है अनुरोध-एचटीएमएल जो प्रतिक्रिया वस्तु पर .html.render() को कॉल करके गतिशील प्रतिपादन का भी समर्थन करता है।

उदाहरण: https://requests-html.kennethreitz.org/index. html#requests_html.HTML.रेंडर

संदर्भ: python में beautifulsoup का उपयोग करके लिंक पर क्लिक करना

0
Taylor Edmiston 18 अप्रैल 2020, 18:23