Python爬虫之代理的设置

【1】urllib中使用公开代理

import urllib.request

url = 'http://www.baidu.com/s?wd=ip'

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'
}

# 请求对象的定制
request = urllib.request.Request(url = url,headers= headers)

# 模拟浏览器访问服务器
proxies = {
    'http':'ip:16818'
}
# handler  build_opener  open
handler = urllib.request.ProxyHandler(proxies = proxies)

opener = urllib.request.build_opener(handler)

response = opener.open(request)

# 获取响应的信息
content = response.read().decode('utf-8')

# 保存
with open('daili.html','w',encoding='utf-8')as fp:
    fp.write(content)

【2】urllib中使用鉴权代理

也就是需要用户名和密码。

import urllib.request
from urllib.error import URLError, HTTPError

# 代理服务器的地址、端口、用户名和密码 121.11.171.10:16818
proxy_host = '121.11.171.10'
proxy_port = '16818'
username = 'jane'
password = '123456'
url = 'http://www.baidu.com/s?wd=ip'

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'
}

# 创建一个密码管理对象
password_mgr = urllib.request.HTTPPasswordMgrWithDefaultRealm()
# 添加代理服务器的认证信息,第一个参数一般填None表示默认领域
password_mgr.add_password(None, proxy_host, username, password)

# 创建一个代理基础认证处理器
proxy_auth_handler = urllib.request.ProxyBasicAuthHandler(password_mgr)

# 创建一个 opener 对象
opener = urllib.request.build_opener(proxy_auth_handler)

# 将创建好的opener安装为全局的,这样后续的请求都会使用这个opener(也可以选择不安装全局,每次请求时手动调用opener的open方法)
urllib.request.install_opener(opener)

# 创建请求对象,这里以访问百度为例
request = urllib.request.Request('https://www.baidu.com')
response = opener.open(request)

# 可以对响应进行后续处理,比如读取内容等
html = response.read().decode('utf-8')
print(html)

【3】Scrapy中设置鉴权单个代理

# 设置代理服务器地址(包含端口),将下面示例中的IP、端口、用户名、密码替换为真实有效的内容
PROXY_SERVER = "http://username:password@proxy_ip:proxy_port"

# 在下载中间件中启用代理
DOWNLOADER_MIDDLEWARES = {
    'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 1,
}

这里的username是代理账号,password是对应的密码,proxy_ip是代理服务器的 IP 地址,proxy_port是代理服务器的端口号。

【4】Scrapy中设置鉴权代理池

在这里插入代码片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值