2016-09-04 6 views
6

मैं सेलेनियम + प्रेतोज़ का उपयोग कर वेबक्रैपिंग के लिए प्रॉक्सी सेट करने का प्रयास कर रहा हूं। मैं अजगर का उपयोग कर रहा हूँ।phantomjs + selenium python proxy-auth काम नहीं कर रहा

मैंने कई स्थानों पर देखा है कि फ़ैंटोमज में एक बग है जैसे प्रॉक्सी-ऑथ काम नहीं करता है।

page.customHeaders = { 'प्रॉक्सी-प्राधिकरण': 'बुनियादी' + btoa ('USERNAME: पासवर्ड')}

from selenium.webdriver.common.proxy import * 
from selenium import webdriver 
from selenium.webdriver.common.by import By 
service_args = [ 
'--proxy=http://fr.proxymesh.com:31280', 
'--proxy-auth=USER:PWD', 
'--proxy-type=http', 
] 

driver = webdriver.PhantomJS(service_args=service_args) 
driver.get("https://www.google.com") 
print driver.page_source 

प्रॉक्सी जाल बजाय निम्नलिखित उपयोग करने का सुझाव;

लेकिन मुझे यकीन नहीं है कि इसे पाइथन में कैसे अनुवादित किया जाए।

from selenium import webdriver 
import base64 
from selenium.webdriver.common.proxy import * 
from selenium import webdriver 
from selenium.webdriver.common.by import By 

service_args = [ 
'--proxy=http://fr.proxymesh.com:31280', 
'--proxy-type=http', 
] 

headers = { 'Proxy-Authorization': 'Basic ' + base64.b64encode('USERNAME:PASSWORD')} 

for key, value in enumerate(headers): 
    webdriver.DesiredCapabilities.PHANTOMJS['phantomjs.page.customHeaders.{}'.format(key)] = value 

driver = webdriver.PhantomJS(service_args=service_args) 
driver.get("https://www.google.com") 
print driver.page_source 

लेकिन यह काम नहीं करता:

यह मैं वर्तमान में क्या है।

कोई सुझाव है कि मैं इसे कैसे काम कर सकता हूं?

+0

आप सेलेनियम और PhantomJS उपयोग करने की आवश्यकता है? वेब स्क्रैपिंग के लिए, ऐसे विकल्प होना चाहिए जो अधिक लचीला हों। –

+0

मुझे एक जावास्क्रिप्ट वेबसाइट को स्क्रैप करने की आवश्यकता है। मैं और क्या उपयोग कर सकता हूं के लिए कोई सुझाव? – chris

+0

इस मामले में कोई बेहतर सुझाव नहीं है। –

उत्तर

4

मैं से जवाब संकलन कर रहा हूँ: How to correctly pass basic auth (every click) using Selenium and phantomjs webdriver के साथ-साथ: base64.b64encode error

from selenium import webdriver 
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 
import base64 

service_args = [ 
    '--proxy=http://fr.proxymesh.com:31280', 
    '--proxy-type=http', 
] 

authentication_token = "Basic " + base64.b64encode(b'username:password') 

capa = DesiredCapabilities.PHANTOMJS 
capa['phantomjs.page.customHeaders.Proxy-Authorization'] = authentication_token 
driver = webdriver.PhantomJS(desired_capabilities=capa, service_args=service_args) 

driver.get("http://...") 
+0

अविश्वसनीय। हफ्तों के लिए इस पर अटक गया है। धन्यवाद! – chris

+0

बहुत बढ़िया, आपका स्वागत है! – jinksPadlock

+0

क्या आपको बक्षीस प्राप्त हुआ? मैंने पहले कभी इसका इस्तेमाल नहीं किया है, इसलिए मुझे नहीं पता कि मुझे आपको बक्षीस देने के लिए कुछ और करना है या नहीं। – chris

3

DesiredCapabilities साथ समाधान मेरे लिए काम नहीं किया। मैं निम्नलिखित समाधान के साथ समाप्त हो गया है:

from selenium import webdriver 

driver = webdriver.PhantomJS(executable_path=config.PHANTOMJS_PATH, 
service_args=['--ignore-ssl-errors=true', 
    '--ssl-protocol=any', 
    '--proxy={}'.format(self.proxy), 
    '--proxy-type=http', 
    '--proxy-auth={}:{}'.format(self.proxy_username, self.proxy_password)]) 
संबंधित मुद्दे