使用Python和HTTPS代理进行Web抓取

使用Python和HTTPS代理进行Web抓取,python,proxy,web-scraping,Python,Proxy,Web Scraping,Python中目前是否有支持HTTPS代理的web抓取功能?我目前在Windows上使用Python2.7,但如果Python3支持HTTPS代理协议,我可以使用它 我尝试使用mechanize和请求,但在HTTPS代理协议上都失败了 此位正在使用mechanize: 进口机械化 br = mechanize.Browser() br.set_debug_http(True) br.set_handle_robots(False) br.set_proxies({ "http" :

Python中目前是否有支持HTTPS代理的web抓取功能?我目前在Windows上使用Python2.7,但如果Python3支持HTTPS代理协议,我可以使用它

我尝试使用mechanize和请求,但在HTTPS代理协议上都失败了

此位正在使用
mechanize
: 进口机械化

br = mechanize.Browser()
br.set_debug_http(True)
br.set_handle_robots(False)

br.set_proxies({
    "http"  : "ncproxy1.uk.net.intra:8080",
    "https" : "ncproxy1.uk.net.intra:8080",})
br.add_proxy_password("uname", "pass")

br.open("http://www.google.co.jp/")  # OK
br.open("https://www.google.co.jp/") # Proxy Authentication Required
或使用
请求

import requests
from requests.auth import HTTPProxyAuth

proxyDict = { 
          'http'  : 'ncproxy1.uk.net.intra:8080', 
          'https' : 'ncproxy1.uk.net.intra:8080'
        }
auth = HTTPProxyAuth('uname', 'pass')

r = requests.get("https://www.google.com", proxies=proxyDict, auth=auth)
print r.text
我得到以下信息:

Traceback (most recent call last):
  File "D:\SRC\NuffieldLogger\NuffieldLogger\nuffieldrequests.py", line 10, in <module>
    r = requests.get("https://www.google.com", proxies=proxyDict, auth=auth)
  File "C:\Python27\lib\site-packages\requests\api.py", line 55, in get
    return request('get', url, **kwargs)
  File "C:\Python27\lib\site-packages\requests\api.py", line 44, in request
    return session.request(method=method, url=url, **kwargs)
  File "C:\Python27\lib\site-packages\requests\sessions.py", line 335, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Python27\lib\site-packages\requests\sessions.py", line 438, in send
    r = adapter.send(request, **kwargs)
  File "C:\Python27\lib\site-packages\requests\adapters.py", line 331, in send
    raise SSLError(e)
requests.exceptions.SSLError: [Errno 1] _ssl.c:504: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
回溯(最近一次呼叫最后一次):
文件“D:\SRC\NuffieldLogger\NuffieldLogger\nuffieldrequests.py”,第10行,在
r=请求。获取(“https://www.google.com,代理=proxyDict,auth=auth)
get中第55行的文件“C:\Python27\lib\site packages\requests\api.py”
返回请求('get',url,**kwargs)
文件“C:\Python27\lib\site packages\requests\api.py”,第44行,在请求中
return session.request(method=method,url=url,**kwargs)
文件“C:\Python27\lib\site packages\requests\sessions.py”,第335行,在请求中
resp=自我发送(准备,**发送)
文件“C:\Python27\lib\site packages\requests\sessions.py”,第438行,在send中
r=适配器.send(请求,**kwargs)
文件“C:\Python27\lib\site packages\requests\adapters.py”,第331行,在send中
升起SSLError(e)
requests.exceptions.SSLError:[Errno 1]\u ssl.c:504:error:140770FC:ssl例程:SSL23\u GET\u SERVER\u HELLO:未知协议

对于请求模块,您可以使用此

#!/usr/bin/env python3

import requests
proxy_dict = {
    'http': 'http://user:passwd@proxy_ip:port',
    'https': 'https://user:passwd@proxy_ip:port'
}
r = requests.get('https://google.com', proxies=proxy_dict)
print(r.text)

我已经对此进行了测试。

mechanize不支持Python 3 afaik。