2017-01-08 13 views
6

का उपयोग करके, एक स्पैन टैग से एक संख्या पुनर्प्राप्त करें, मैं अजगर और HTML के लिए नया हूं। मैं अनुरोध और सुंदर सूप का उपयोग कर किसी पृष्ठ से टिप्पणियों की संख्या पुनर्प्राप्त करने का प्रयास कर रहा हूं।पायथन अनुरोध और सुंदर सूप

<a title="Go to the comments page" class="article__comments-counts" href="http://www.theglobeandmail.com/opinion/will-kevin-oleary-be-stopped/article33519766/comments/"> 
    <span class="civil-comment-count" data-site-id="globeandmail" data-id="33519766" data-language="en"> 
    226 
    </span> 
    Comments 
</a> 

मैं URL से पाठ का अनुरोध करते हैं, मैं:

इस उदाहरण मैं नंबर 226 यहाँ पाने के लिए कोशिश कर रहा हूँ में कोड के रूप में मैं इसे देख सकते हैं जब मैं क्रोम में पेज का निरीक्षण किया है

import requests, bs4 

url = 'http://www.theglobeandmail.com/opinion/will-kevin-oleary-be-stopped/article33519766/' 
r = requests.get() 
soup = bs4.BeautifulSoup(r.text, 'html.parser') 

span = soup.find('span', class_='civil-comment-count') 

यह इस, ऊपर के रूप में ही है, लेकिन कोई 226.

<span class="civil-comment-count" data-id="33519766" data-language="en" data-site-id="globeandmail"> 
</span> 
0 रिटर्न: कोड प्राप्त कर सकते हैं लेकिन वहाँ अवधि टैग के बीच कोई सामग्री है, कोई 226 यहाँ मेरी कोड है

मुझे नुकसान हुआ है कि मूल्य क्यों नहीं दिख रहा है। किसी भी सहायता के लिए अग्रिम धन्यवाद।

उत्तर

4

पृष्ठ, और विशेष रूप से टिप्पणियों की संख्या, जावास्क्रिप्ट को लोड और दिखाया गया है।

import requests 

with requests.Session() as session: 
    session.headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36"} 

    # visit main page 
    base_url = 'http://www.theglobeandmail.com/opinion/will-kevin-oleary-be-stopped/article33519766/' 
    session.get(base_url) 

    # get the comments count 
    url = "https://api-civilcomments.global.ssl.fastly.net/api/v1/topics/multiple_comments_count.json" 
    params = {"publication_slug": "globeandmail", 
       "reference_language": "en", 
       "reference_ids": "33519766"} 
    r = session.get(url, params=params) 
    print(r.json()) 

प्रिंटों:: लेकिन, आप सेलेनियम उपयोग करने के लिए, इसके पीछे एपीआई के लिए अनुरोध करने की जरूरत नहीं है

{'comment_counts': {'33519766': 226}} 
+0

मैं के बारे में यूआरएल को खोजने के लिए था .... –

2

यह पृष्ठ उपयोग जावास्क्रिप्ट टिप्पणी संख्या प्राप्त करने, यह है कि क्या जब JavaScript अक्षम की तरह पेज नज़र: enter image description here

आप वास्तविक यूआरएल जो Chrome की डेवलपर टूल में नंबर शामिल पा सकते हैं: enter image description here

आप @alecxe कोड का उपयोग कर अनुरोधों की नकल कर सकते हैं।