मैं इस पोस्ट से सामग्री निकालने की कोशिश कर रहा हूं "https://community.diabetes.org /discuss/viewtopic/3/13319" और स्क्रैपिंग जारी रखने के लिए पोस्ट पृष्ठों पर पुनरावृति करने के लिए, लेकिन अगले पृष्ठ कुछ JS कोड द्वारा प्रस्तुत किए गए। कोई विचार इसे कैसे हल करें?

import requests

url = 'https://community.diabetes.org/discuss/viewcategory/3/13319'

r = requests.get(url)

text = r.text

from bs4 import BeautifulSoup

soup = BeautifulSoup(text,"lxml")

Title = []

title = soup.find_all("h3",{"class":"forum-post-subject"})


 for i in title:
        Title.append(i.text.strip())
0
shruthimanas 4 अप्रैल 2018, 14:55

2 जवाब

सबसे पहले आपके कोड को पुनरावृति करने में सक्षम होने के लिए 'href' प्राप्त करना होगा, इसके लिए, आपको निम्नलिखित पंक्तियों को बदलना चाहिए

>>> title = soup.find_all("a")
[<a class="site-page-link" href="/unlog.php" target="_self" title="Login">Login</a>,....]
>>> kk=[i.get('href') for i in title]
>>> len(kk)
26

बाहर है:यहां छवि विवरण दर्ज करें

0
Julio CamPlaz 4 अप्रैल 2018, 12:33

यदि आपको गतिशील सामग्री प्राप्त करनी है, तो आप जावास्क्रिप्ट को संकलित करने के लिए फैंटमजेएस का उपयोग कर सकते हैं और बाद में सामग्री, या सेलेनियम (आसान) ले सकते हैं। यदि आपके पास अधिक समय है, तो आप जावास्क्रिप्ट कोड से अनुरोध यूआरएल ले सकते हैं और इसे अनुरोध मॉड्यूल के साथ बना सकते हैं।

वैसे, मैं सुंदर सूप के बजाय lxml मॉड्यूल का उपयोग करने की सलाह देता हूं, यह तेज़ है।

0
Baurin Leza 4 अप्रैल 2018, 13:38