2015-12-29 5 views
17

इसलिए मैंने हाल ही में यूट्यूब पर "द न्यू बोस्टन के" वीडियो का उपयोग करके पायथन सीखना शुरू किया, जब तक कि मैं एक साधारण वेब क्रॉलर बनाने के अपने ट्यूटोरियल तक नहीं पहुंच जाता, तब तक सब कुछ बढ़िया हो रहा था। जबकि मैं इसे किसी समस्या के साथ समझ गया, जब मैं कोड चलाता हूं तो मुझे लगता है कि "एसएसएल: CERTIFICATE_VERIFY_FAILED" के आसपास सभी त्रुटियां मिलती हैं। मैं पिछली रात से इसे ठीक करने का तरीका जानने का प्रयास कर रहा हूं, ऐसा लगता है कि वीडियो पर या उसकी वेबसाइट पर टिप्पणियों में कोई और भी मेरे जैसा ही समस्या नहीं है और यहां तक ​​कि किसी से भी एल्स कोड का उपयोग कर रहा है वेबसाइट मुझे एक ही परिणाम मिलते हैं। मैं वेबसाइट से प्राप्त कोड से कोड पोस्ट करूंगा क्योंकि यह मुझे एक ही त्रुटि दे रहा है और जिसे मैंने कोड किया है वह अभी एक गड़बड़ है।"एसएसएल: प्रमाणपत्र_verify_failed" पायथन?

import requests 
from bs4 import BeautifulSoup 

def trade_spider(max_pages): 
    page = 1 
    while page <= max_pages: 
     url = "https://www.thenewboston.com/forum/category.php?id=15&orderby=recent&page=" + str(page) #this is page of popular posts 
     source_code = requests.get(url) 
     # just get the code, no headers or anything 
     plain_text = source_code.text 
     # BeautifulSoup objects can be sorted through easy 
     for link in soup.findAll('a', {'class': 'index_singleListingTitles'}): #all links, which contains "" class='index_singleListingTitles' "" in it. 
      href = "https://www.thenewboston.com/" + link.get('href') 
      title = link.string # just the text, not the HTML 
      print(href) 
      print(title) 
      # get_single_item_data(href) 
    page += 1 
trade_spider(1) 

पूर्ण त्रुटि है: ssl.SSLError: [एसएसएल: CERTIFICATE_VERIFY_FAILED] प्रमाणपत्र सत्यापित विफल (_ssl.c: 645)

मैं माफी माँगता हूँ अगर यह एक मूक सवाल है, मैं अभी भी करने के लिए नए कर रहा हूँ प्रोग्रामिंग लेकिन मैं इसे गंभीरता से नहीं समझ सकता, मैं सिर्फ इस ट्यूटोरियल को छोड़ने के बारे में सोच रहा था, लेकिन यह मुझे परेशान कर रहा है कि इसे ठीक करने में सक्षम न हो, धन्यवाद!

+0

मुझे "फ़ाइल नहीं मिली" मिल रही है। संदेश https: //www.thenewboston.com/tops.php पर टाइप करने का प्रयास करते समय संदेश = प्रकार = अवधि = अवधि = इस महीने और पृष्ठ = 1'। क्या आप सत्यापित कर सकते हैं कि पृष्ठ मौजूद है? – NuclearPeon

+0

@ न्यूक्लियर पीन हू, मैंने शपथ ली थी कि यह कल काम कर रहा था, भले ही मैंने 'https: //www.thenewboston.com/forum/category.php? Id = 15 और orderby = हालिया और पेज = 'का उपयोग करने की कोशिश की, जिसके बजाय आपको पायथन में लाया जाना चाहिए वेबसाइट के अनुभाग और मुझे इसके साथ एक ही त्रुटि मिल रही है। –

+0

मैंने इस मुद्दे को हल करने के लिए कुछ घंटों बिताए, केवल यह पता लगाने के लिए कि मेरे पास फिडलर चल रहा था। – JBourne

उत्तर

10

समस्या अपने कोड में लेकिन वेब साइट तक पहुँचने का प्रयास कर रहे हैं में नहीं है में और अधिक देखें। जब analysis by SSLLabs पर ध्यान देकर आप ध्यान देंगे:

This server's certificate chain is incomplete. Grade capped to B.

इसका मतलब है कि सर्वर विन्यास गलत और है कि केवल नहीं अजगर लेकिन कई अन्य लोगों के लिए इस साइट के साथ समस्याओं होगा। कुछ डेस्कटॉप ब्राउज़र इंटरनेट से लापता प्रमाण पत्र लोड या कैश की गई प्रमाणपत्र के साथ भरने के लिए कोशिश कर रहा द्वारा इस विन्यास समस्या को हल करने। लेकिन अन्य ब्राउज़र या एप्लिकेशन भी पाइथन के समान असफल हो जाएंगे।

टूटा सर्वर विन्यास हल करने के लिए आप स्पष्ट रूप से लापता प्रमाणपत्रों को निकालने और उन्हें जोड़ने आप दुकान पर भरोसा करना हो सकता है। या आप प्रमाण पत्र को सत्यापित तर्क के अंदर विश्वास के रूप में दे सकते हैं।the documentation से:

You can pass verify the path to a CA_BUNDLE file or directory with certificates of trusted CAs:

>>> requests.get('https://github.com', verify='/path/to/certfile') 

This list of trusted CAs can also be specified through the REQUESTS_CA_BUNDLE environment variable.

+0

आपके उत्तर के लिए धन्यवाद! यही वह है जो मैं वास्तव में नहीं समझ सकता था, अगर यह मेरी गलती थी या नहीं। आपकी सहायता के लिए एक बार फिर से धन्यवाद! –

+1

@ बिलजेंकिन्स: सामान्य तरीका आपको धन्यवाद के साथ कोई टिप्पणी नहीं जोड़ना है, लेकिन अगर यह सही है तो उत्तर स्वीकार करने के लिए। –

+0

मुझे yelp के साथ एक ही त्रुटि मिलती है, जिसमें ए + रेटिंग – derp92

1

मैं इसे एक उत्तर के रूप में पोस्ट कर रहा हूं क्योंकि मुझे अब तक आपकी समस्या का सामना करना पड़ा है, लेकिन अभी भी आपके कोड में समस्याएं हैं (जो तय होने पर, मैं अपडेट कर सकता हूं)।

इतनी लंबी कहानी छोटी: आप अनुरोधों के पुराने संस्करण का उपयोग कर सकते हैं या एसएसएल प्रमाण पत्र अमान्य होना चाहिए।

https://www.thenewboston.com/forum/category.php?id=15&orderby=recent&page=1 
Traceback (most recent call last): 
    File "./bsoup.py", line 26, in <module> 
    trade_spider(1) 
    File "./bsoup.py", line 16, in trade_spider 
    for link in BeautifulSoup.findAll('a', {'class': 'index_singleListingTitles'}): #all links, which contains "" class='index_singleListingTitles' "" in it. 
    File "/usr/local/lib/python3.4/dist-packages/bs4/element.py", line 1256, in find_all 
    generator = self.descendants 
AttributeError: 'str' object has no attribute 'descendants' 
:

#!/usr/bin/env python3 

import requests 
from bs4 import BeautifulSoup 

def trade_spider(max_pages): 
    page = 1 
    while page <= max_pages: 
     url = "https://www.thenewboston.com/forum/category.php?id=15&orderby=recent&page=" + str(page) #this is page of popular posts 
     source_code = requests.get(url, timeout=5, verify=False) 
     # just get the code, no headers or anything 
     plain_text = source_code.text 
     # BeautifulSoup objects can be sorted through easy 
     for link in BeautifulSoup.findAll('a', {'class': 'index_singleListingTitles'}): #all links, which contains "" class='index_singleListingTitles' "" in it. 
      href = "https://www.thenewboston.com/" + link.get('href') 
      title = link.string # just the text, not the HTML 
      print(href) 
      print(title) 
      # get_single_item_data(href) 

     page += 1 

if __name__ == "__main__": 
    trade_spider(1) 

जब मैं स्क्रिप्ट चलाने, यह मुझे इस त्रुटि देता है: Python requests "certificate verify failed"

मैं अपने खुद के bsoup.py फ़ाइल में कोड को नवीनीकृत किया है: इस तो सवाल में अधिक जानकारी है

आपकी findAll विधि के साथ कहीं कोई समस्या है। मैं दोनों python3 और को Python2, जिसमें को Python2 रिपोर्ट इस का उपयोग किया है:

TypeError: unbound method find_all() must be called with BeautifulSoup instance as first argument (got str instance instead) 

तो यह की तरह आपको लगता है कि विधि ठीक करने के लिए इससे पहले कि आप

+0

एचएम, प्रतिक्रिया के लिए धन्यवाद! मैं अभी भी एसएसएल मुद्दे के साथ थोड़ा उलझन में हूं क्योंकि मैं इसे किसी अन्य मंच पर काम करने में कामयाब रहा, इसलिए मुझे नहीं लगता कि यह अनुरोधों में एक समस्या है। मुझे लगता है कि एसएसएल प्रमाणपत्र अवैध है? लेकिन मुझे नहीं पता कि वास्तव में इसका क्या अर्थ है। मैं आपके द्वारा लिंक किए गए थ्रेड पर गया और 'request.get (url)' to 'request.get (url, verify = झूठा) बदल दिया 'और अब मुझे केवल सुंदर सूप में निर्दिष्ट कोई पार्सर निर्दिष्ट करने में त्रुटि नहीं है। हालांकि, मैं इसे किसी भी चीज़ को वास्तव में समझ नहीं पा रहा हूं, 'सत्यापित = गलत' इसे काम कर रहा है, या पार्सर निर्दिष्ट नहीं किया जा रहा है। –

+0

@ बिलजेंकिन्स मैं वास्तव में इसे बहुत समझ में नहीं आता हूं। मैंने हाल ही में माइक्रोसॉफ्ट के पुराने प्रमाण पत्रों का एक समूह अवैध रूप से सुना है, और कभी-कभी अलग-अलग ब्राउज़र अलग-अलग कॉलर्स को भी संभालते हैं (फ़ायरफ़ॉक्स बनाम क्रोम)। काश मैं और अधिक मदद कर सकता हूँ, क्षमा करें। सौभाग्य! – NuclearPeon

+0

आह ठीक है, आपकी मदद करने वाले सभी के लिए धन्यवाद! मैं इसकी प्रशंसा करता हूँ! –

7

जारी रख सकते हैं आप अनुरोध नहीं बता सकता सत्यापित करना होगा लग रहा है SSL प्रमाणपत्र:

>>> url = "https://www.thenewboston.com/forum/category.php?id=15&orderby=recent&page=1" 
>>> response = requests.get(url, verify=False) 
>>> response.status_code 
200 

requests doc

+4

प्रमाणीकरण को बंद करना आम तौर पर एक बुरी सलाह है क्योंकि यह एप्लिकेशन असुरक्षित बनाकर समस्या के आसपास काम करता है। प्रमाण पत्र प्रमाणित होने के कारण हैं (मध्य हमलों में मनुष्य के खिलाफ सुरक्षा)। इस प्रकार यह केवल ** परीक्षण के लिए ** के आसपास एक काम हो सकता है ** आपको इसे कभी भी उत्पादन कोड में नहीं करना चाहिए। सबसे अच्छा यह है कि समस्या को ठीक से कैसे ठीक किया जाए और न कि असुरक्षित तरीके से इसके आसपास कैसे काम करना है, सीखना सबसे अच्छा है। –

4

आप शायद आपके सिस्टम में शेयर प्रमाण पत्र याद कर रहे हैं। जैसे अगर उबंटू पर चल रहा है, तो जांचें कि ca-certificates पैकेज स्थापित है।

+0

मुझे लिनक्स पर पैकेज की कमी थी, इसमें इस मुद्दे को हल किया गया। समस्या यह है कि मुझे यकीन नहीं है कि विंडोज़ पर इसे कैसे ठीक किया जाए। –