当前位置: 首页 > article >正文

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中设置鉴权代理池

在这里插入代码片

http://www.kler.cn/a/441584.html

相关文章:

  • 【面试总结】FFN(前馈神经网络)在Transformer模型中先升维再降维的原因
  • Qt Creator 15.0.0如何更换主题和字体
  • WPF实战案例 | C# WPF实现大学选课系统
  • SQL-leetcode—1141. 查询近30天活跃用户数
  • Flutter:自定义Tab切换,订单列表页tab,tab吸顶
  • MyBatis和JPA区别详解
  • linux0.11源码分析第一弹——bootset.s内容
  • (2024.12)记录——Ubuntu20.04安装opencv库
  • 【JVM】JVM基础教程(四)
  • ubuntu20.04安装qt creator
  • Leetcode经典题8--H指数
  • 深度学习之Autoencoders GANs for Anomaly Detection 视频异常检测
  • xshell连接虚拟机,更换网络模式:NAT->桥接模式
  • SpringBoot集成ENC对配置文件进行加密
  • 阶段性demo 键盘信息过滤
  • 天猫魔盒M17/M17S_超级UI 线刷固件包-可救砖(刷机取消双勾)
  • 【HF设计模式】03-装饰者模式
  • Transformer 中 Self-Attention 的二次方复杂度(Quadratic Complexity )问题及改进方法:中英双语
  • 【Flink-scala】DataStream编程模型总结
  • 2025山东科技大学考研专业课复习资料一览
  • Java设计模式实战:策略模式、工厂模式、模板模式组合使用
  • 人工智能浪潮来袭:2024年技术革命与产业变革深度解析@附64页PDF文件下载
  • 基于Android的生活记录app的设计与实现
  • 【教程】让Jupyter支持打开CSV和Excel(xlsx)文件
  • 死信队列概述
  • 【Leetcode】滑动窗口算法-编程苍穹下划破数据暗夜的高效光弧