您的位置:首页 > 编程语言 > Python开发

scrapy怎么设置带有密码的代理ip base64.encodestring不能用 python3.5,base64库里面的encodestring()被换成了什么?

2018-01-08 19:26 639 查看
自己写爬虫时买的代理ip有密码,在网上查了都是下面这种:

1、在Scrapy工程下新建"middlewares.py":

import base64

# Start your middleware class

class ProxyMiddleware(object):

# overwrite process request

def process_request(self, request, spider):

# Set the location of the proxy

request.meta['proxy'] = "http://YOUR_PROXY_IP:PORT"

# Use the following lines if your proxy requires authentication

proxy_user_pass = "USERNAME:PASSWORD"

# setup basic authentication for the proxy

encoded_user_pass = base64.encodestring(proxy_user_pass) #我用的python3.5,这个地方报错 TypeError: expected bytes-like object, not str

request.headers['Proxy-Authorization'] = 'Basic ' + encoded_user_pass

2、在项目配置文件里setting.py添加:

DOWNLOADER_MIDDLEWARES = {

... #此处省略其他中间件配置

'ScrapyRedisTest.middlewares.ProxyMiddleware': 100,

}

================================解决方法如下:(只改动标红的两行,其他的都不变)================================================

import base64

# Start your middleware class

class ProxyMiddleware(object):

# overwrite process request

def process_request(self, request, spider):

# Set the location of the proxy

request.meta['proxy'] = "http://YOUR_PROXY_IP:PORT"

# Use the following lines if your proxy requires authentication

proxy_user_pass = "USERNAME:PASSWORD"

# setup basic authentication for the proxy

encoded_user_pass = base64.b64encode(proxy_user_pass.encode('utf-8'))

request.headers['Proxy-Authorization'] = 'Basic ' + str(encoded_user_pass, encoding="utf-8")

2、在项目配置文件里setting.py添加:

DOWNLOADER_MIDDLEWARES = {

... #此处省略其他中间件配置

'ScrapyRedisTest.middlewares.ProxyMiddleware': 100,

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: