दिलचस्प पोस्ट
"शीर्ष स्तर JSON arrays" क्या हैं और वे एक सुरक्षा जोखिम क्यों हैं? सी ++ अनाम स्ट्रैक्ट्स और यूनियनों को अस्वीकार क्यों करता है? पूरी तरह से कोकोस -2 डी-एक्स ट्यूटोरियल और गाइड सूची पायथन की "इस यूनिकोड के लिए सबसे अच्छा ASCII" डेटाबेस कहां है? घातक त्रुटि: ऑब्जेक्ट संदर्भ में नहीं होने पर $ का उपयोग करना ऐसे फाइल को लोड नहीं कर सकता – rvm pkg install zlib का उपयोग करने के बाद भी zlib MySQL ट्रिगर अद्यतन के बाद ही अगर पंक्ति बदल गई है JQuery के प्रतिस्थापन () और html () के बीच अंतर क्या है? जावा का उपयोग वर्डप्रेस यूआरएल से श्रेणी और टैग आधार हटाएं – बिना किसी प्लगइन के IIS7 पर पार-स्रोत संसाधन साझा करना सक्षम करना जेएसएफ: जेएसएफ में कैसे पहुंच नियंत्रण और अधिकार? कैसे जांचें कि IEnumerable रिक्त या रिक्त है? एकाधिक स्रोत निर्देशिकाओं के साथ मेवेन संकलित करें पुस्तकालयों के साथ मेकफाइल बनाना

Urllib2 के साथ प्रॉक्सी

मैं निम्न के साथ यूआरएल खोलता हूं:

site = urllib2.urlopen('http://google.com')

और जो मैं करना चाहता हूं वह प्रॉक्सी के साथ उसी तरह से जुड़ता है, मुझे कहीं कह रहा था:

site = urllib2.urlopen('http://google.com', proxies={'http':'127.0.0.1'})

लेकिन वह या तो काम नहीं कर रहा था

मुझे पता है urllib2 को प्रॉक्सी हैंडलर की तरह कुछ है, लेकिन मैं उस समारोह को याद नहीं कर सकता

वेब के समाधान से एकत्रित समाधान "Urllib2 के साथ प्रॉक्सी"

 proxy = urllib2.ProxyHandler({'http': '127.0.0.1'}) opener = urllib2.build_opener(proxy) urllib2.install_opener(opener) urllib2.urlopen('http://www.google.com') 

आपको एक प्रॉक्सीहैंडलर स्थापित करना होगा

 urllib2.install_opener( urllib2.build_opener( urllib2.ProxyHandler({'http': '127.0.0.1'}) ) ) urllib2.urlopen('http://www.google.com') 

डिफ़ॉल्ट सिस्टम प्रॉक्सी का उपयोग करने के लिए (उदाहरण के लिए http_support पर्यावरण चर से), वर्तमान अनुरोध के लिए निम्न कार्य (इसे urllib2 में विश्व स्तर पर स्थापित किए बिना):

 url = 'http://www.example.com/' proxy = urllib2.ProxyHandler() opener = urllib2.build_opener(proxy) in_ = opener.open(url) in_.read() 

आप पर्यावरण चर का उपयोग करके प्रॉक्सी सेट कर सकते हैं।

 import os os.environ['http_proxy'] = '127.0.0.1' os.environ['https_proxy'] = '127.0.0.1' 

urllib2 स्वचालित रूप से इस तरह से प्रॉक्सी हैंडलर्स जोड़ देगा आपको अलग-अलग प्रोटोकॉल के लिए अलग-अलग प्रॉक्सी सेट करने की आवश्यकता है अन्यथा वे विफल हो जाएंगे (प्रॉक्सी के माध्यम से नहीं जाने के संदर्भ में), नीचे देखें।

उदाहरण के लिए:

 proxy = urllib2.ProxyHandler({'http': '127.0.0.1'}) opener = urllib2.build_opener(proxy) urllib2.install_opener(opener) urllib2.urlopen('http://www.google.com') # next line will fail (will not go through the proxy) (https) urllib2.urlopen('https://www.google.com') 

बजाय

 proxy = urllib2.ProxyHandler({ 'http': '127.0.0.1', 'https': '127.0.0.1' }) opener = urllib2.build_opener(proxy) urllib2.install_opener(opener) # this way both http and https requests go through the proxy urllib2.urlopen('http://www.google.com') urllib2.urlopen('https://www.google.com') 

स्वीकृत उत्तर के साथ में: मेरे विवेक ने मुझे एक त्रुटि दी

 File "c:\Python23\lib\urllib2.py", line 580, in proxy_open if '@' in host: TypeError: iterable argument required 

प्रॉक्सी स्ट्रिंग के सामने http: // को जोड़ने का उपाय था:

 proxy = urllib2.ProxyHandler({'http': 'http://proxy.xy.z:8080'}) opener = urllib2.build_opener(proxy) urllib2.install_opener(opener) urllib2.urlopen('http://www.google.com') 

कोई भी अनुरोधों का उपयोग कर सकता है, अगर हम प्रॉक्सी का उपयोग करके एक वेब पेज तक पहुंचाना चाहते हैं पायथन 3 कोड:

 >>> import requests >>> url = 'http://www.google.com' >>> proxy = '169.50.87.252:80' >>> requests.get(url, proxies={"http":proxy}) <Response [200]> 

एक से अधिक प्रॉक्सी भी जोड़ सकते हैं।

 >>> proxy1 = '169.50.87.252:80' >>> proxy2 = '89.34.97.132:8080' >>> requests.get(url, proxies={"http":proxy1,"http":proxy2}) <Response [200]> 

इसके अलावा कमांड लाइन सत्र के लिए प्रॉक्सी सेट करें एक कमांड लाइन खोलें जहां आप अपनी स्क्रिप्ट को चलाना चाहते हैं

 netsh winhttp set proxy YourProxySERVER:yourProxyPORT 

उस टर्मिनल में अपनी स्क्रिप्ट चलाएं

Urllib2 एक वास्तविक ब्राउज़र के रूप में प्रस्तुत करने में सक्षम कैसे हो सकता है क्योंकि कई स्क्रिप्ट साइट को स्क्रैप करने से स्क्रिप्ट ब्लॉक कर देगी?

उदाहरण कोड:

 import sys import urllib2 from bs4 import BeautifulSoup parser = "html.parser" quote_page = "https://www.bloomberg.com/quote/SPX:IND" proxy = urllib2.ProxyHandler({'http': 'myproxy:3128'}) opener = urllib2.build_opener(proxy) urllib2.install_opener(opener) page = urllib2.urlopen(quote_page) soup = BeautifulSoup(page, parser) print soup.prettify()