Python爬虫使用代理IP的实现

news2024/11/26 3:36:25

使用爬虫时,如果目标网站对访问的速度或次数要求较高,那么你的 IP 就很容易被封掉,也就意味着在一段时间内无法再进行下一步的工作。这时候代理 IP 能够给我们带来很大的便利,不管网站怎么封,只要能找到一个新的代理 IP 就可以继续进行下一步的研究。

目前很多网站都提供了一些免费的代理 IP 供我们使用,当然付费的会更好用一点。本文除了展示怎样使用代理 IP,也正好体验一下前面文章中搭建的代理 IP 池,不知道的可以点击这里:Python搭建代理IP池(一)- 获取 IP。只要访问代理池提供的接口就可以获取到代理 IP 了,接下来就看怎样使用吧!

在这里插入图片描述

API测试网址:http://www.jshk.com.cn/,访问该站点可以得到请求的一些相关信息,其中 origin 字段就是客户端的 IP,根据它来判断代理是否设置成功,也就是是否成功伪装了IP

获取 IP

代理池使用 Flask 提供了获取的接口:http://localhost:5555/random
只要访问这个接口再返回内容就可以拿到 IP 了

Urllib

先看一下 Urllib 的代理设置方法:

from urllib.error import URLError
import urllib.request
from urllib.request import ProxyHandler, build_opener
 
# 获取IP
ip_response = urllib.request.urlopen("http://localhost:5555/random")
ip = ip_response.read().decode('utf-8')
 
proxy_handler = ProxyHandler({
  'http': 'http://' + ip,
  'https': 'https://' + ip
})
opener = build_opener(proxy_handler)
try:
  response = opener.open('http://httpbin.org/get')
  print(response.read().decode('utf-8'))
except URLError as e:
  print(e.reason)

运行结果:

{
 "args": {},
 "headers": {
  "Accept-Encoding": "identity",
  "Host": "httpbin.org",
  "User-Agent": "Python-urllib/3.7"
 },
 "origin": "108.61.201.231, 108.61.201.231",
 "url": "https://httpbin.org/get"
} 

Urllib 使用 ProxyHandler 设置代理,参数是字典类型,键名为协议类型,键值是代理,代理前面需要加上协议,即 http 或 https,当请求的链接是 http 协议的时候,它会调用 http 代理,当请求的链接是 https 协议的时候,它会调用https代理,所以此处生效的代理是:http://108.61.201.231 和 https://108.61.201.231
ProxyHandler 对象创建之后,再利用 build_opener() 方法传入该对象来创建一个 Opener,这样就相当于此 Opener 已经设置好代理了,直接调用它的 open() 方法即可使用此代理访问链接

Requests

Requests 的代理设置只需要传入 proxies 参数:

import requests
 
# 获取IP
ip_response = requests.get("http://localhost:5555/random")
ip = ip_response.text
 
proxies = {
  'http': 'http://' + ip,
  'https': 'https://' + ip,
}
try:
  response = requests.get('http://httpbin.org/get', proxies=proxies)
  print(response.text)
except requests.exceptions.ConnectionError as e:
  print('Error', e.args)

运行结果:

{
 "args": {},
 "headers": {
  "Accept": "*/*",
  "Accept-Encoding": "gzip, deflate",
  "Host": "httpbin.org",
  "User-Agent": "python-requests/2.21.0"
 },
 "origin": "47.90.28.54, 47.90.28.54",
 "url": "https://httpbin.org/get"
}

Requests 只需要构造代理字典然后通过 proxies 参数即可设置代理,比较简单。

Selenium

import requests
from selenium import webdriver
import time
 
# 借助requests库获取IP
ip_response = requests.get("http://localhost:5555/random")
ip = ip_response.text
 
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--proxy-server=http://' + ip)
browser = webdriver.Chrome(chrome_options=chrome_options)
browser.get('http://httpbin.org/get')
time.sleep(5)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/716005.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软考:中级软件设计师:计算机存储结构,cache,局部性原理,RAM和ROM,磁盘结构和计算

软考:中级软件设计师:计算机存储结构 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性 关于互联网大厂的笔试面试,都是需要细心准备的…

2023年铁矿石行业研究报告

第一章 行业概况 铁矿石行业是指从地壳中开采铁矿石,经过破碎、筛选、洗选等步骤,使其达到工业上可用的标准的一整套产业。这个行业涵盖了从开采到运输,再到冶炼和销售的全过程。它是全球制造业,尤其是钢铁工业的基础。 铁矿石的…

org.apache.commons(commons-csv)下载CSV增加BOM头

网络说明 代码说明 依赖 <!--https://mvnrepository.com/artifact/org.apache.commons/commons-csv--><dependency><groupId>org.apache.commons</groupId><artifactId>commons-csv</artifactId><version>1.8</version><…

C++学习笔记-第9单元 异常处理

第9单元 异常处理 文章目录 第9单元 异常处理单元导读9.1 异常处理概览9.1.1 异常处理概览9.1.2 异常处理机制的优点 9.2 异常匹配与内建异常类9.2.1 异常匹配与异常类9.2.2 内建异常类 9.3 自定义异常类与多重捕获9.3.1 自定义异常类9.3.2 捕获多种无关异常9.3.3 捕获派生异常…

C#Winform 中tabcontrol 美化实例

本篇讲解tabcontrol 美化实例,我们项目开发中为了保持项目界面的风格的一致性,需要美化tabcontrol控件,系统自带的控件样式不能更改,无法满足需求。 先看效果 实现过程 创建winform项目,添加组件类控件 修改名称,点击添加 cs代码 using System.Drawing; using Sys…

TX Text Control .NET for WPF 31.SP3 Crack

.NET WPF 应用程序的文档处理 将文档编辑、创建和 PDF 生成添加到您的 WPF 应用程序中。 视窗用户界面 功能齐全的文档编辑器 TX Text Control 是一款免版税、完全可编程的丰富编辑控件&#xff0c;它在专为 Visual Studio 设计的可重用组件中为开发人员提供了广泛的文字处理功…

Spring Native 实现 0.059s 启动一个SpringBoot项目!

前言 最近自己用Spring Cloud Alibaba做了一个微服务架构的项目&#xff0c;部署的时候遇到了难题&#xff1a;内存不够。目前该项目有7个微服务&#xff0c;因为我只有一台阿里云的服务器(2C 4G)&#xff0c;所以我只能把所有的微服务部署在一台服务器上&#xff0c;部署方式…

uni-App踩坑记录

​ 1、uni自己封装的axios在真机中失效&#xff0c;发不出请求 uniapp中使用axios 需要配置适配器 (添加适配器有点费劲&#xff0c;直接封装uni自带请求也可以) axios-adapter-uniapp传送门 axios.defaults.adapter function(config) { //自己定义个适配器&#xff0c;用来…

JS获取表单保存的时候发送到server端的xml

var dataXml Xrm.Page.data.entity.getDataXml(); alert(dataXml); JS获取表单保存的时候发送到server端的xml。

一文读懂Unreal Engine游戏引擎如何提高数字孪生场景渲染能力

以下案例来自于《数字孪生世界白皮书&#xff08;2023版&#xff09;》 领取方式&#xff1a;公众号「EasyV数字孪生」后台回复「白皮书」即可领取&#xff01; Unreal Engine&#xff08;下文简称为UE&#xff09;&#xff0c;是一款由Epic Games开发的游戏引擎&#xff0c;…

100天精通Python(可视化篇)——第94天:Pyecharts绘制多种炫酷散点图(参数说明+代码实战)

文章目录 专栏导读一、Scatter&#xff08;散点图&#xff09;1. add函数2. 数据项 二、基础气泡图三、多维度散点图四、添加分割线五、动态涟漪散点图六、不同形状散点图七、3D散点图 专栏导读 &#x1f525;&#x1f525;本文已收录于《100天精通Python从入门到就业》&#…

CentOS7 图形化方式安装 Oracle19C

CentOS7 图形化方式安装 Oracle19C 操作系统&#xff1a;CentOS7 Oracle&#xff1a; 19C 远程连接工具&#xff1a;Xmanager Power Suite 7 安装常用工具和依赖 yum -y install vim tar net-tools wget perl python3 readline* deltarpm python-deltarpm \zip unzip bc compa…

天翎群晖NAS为全文检索插翅起飞

编者按&#xff1a;企业的文档资料随着企业的业务发展会越来越多&#xff0c;想要某个资料的时候&#xff0c;最怕找不到想要的资料&#xff0c;这时KMS的全文检索功能就非常重要了&#xff0c;只需只言片语的零星关键字&#xff0c;查找文档没压力。 关键词&#xff1a;全文检…

Liunx服务器磁盘挂载

一&#xff1a;查看磁盘信息 [rootxxx ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 1024M 0 rom vda 253:0 0 100G 0 disk ├─vda1 …

【动态规划算法】第三题:746.使用最小花费爬楼梯

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树 &#x1f389;作者宣言&#xff1a;认真写好每一篇博客 &#x1f38a;作者gitee:gitee &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法 如 果 你 喜 欢 作 者 的 文 章 &#xff0c;就 给 作…

能代替纸质笔记本的记录软件哪个好?

在很长一段时间里&#xff0c;纸质笔记本一直是我们记录信息的常用工具。然而随着记录需求的不断增加&#xff0c;纸质笔记本也暴露了一些不足之处。首先&#xff0c;它们的存储容量有限&#xff0c;很难管理大量的笔记。其次&#xff0c;如果纸质笔记本遗失或损坏&#xff0c;…

上门家政小程序|上门保洁APP|家政服务预约上门软件开发

上门家政小程序对于上门保洁服务非常方便。下面是一些简单介绍&#xff1a;   预约便捷&#xff1a;通过上门家政小程序&#xff0c;用户可以随时随地进行保洁服务的预约。无论是在家中、办公室还是旅途中&#xff0c;用户只需打开小程序&#xff0c;选择合适的日期和时间&am…

zabbix基础1——发展起源、基础安装、配置文件参数释义

文章目录 一、基本了解二、配置文件详解2.1 服务端配置文件2.2 客户端配置文件 三、源码安装3.1 安装服务端3.2 配置web前端文件3.3 访问网页 一、基本了解 前提背景&#xff1a; Zabbix是一个企业级分布式开源监控解决方案&#xff0c;由 Alexei Vladishev 创建&#xff0c;目…

gitee配置ssh公钥免密登录

如下配置&#xff0c;即可让本电脑直接推送gitee&#xff0c;而无需输入码云的密码 下载git配置用户名&#xff1a;git config --global user.name “zhangsan” //以后的提交人就是这个名字配置邮箱&#xff1a;git config --global user.email “zhangsanqq.com” //注册账号…

C# 在控制台整齐的输出 DataTable

效果: 一、前言 在 Winform 平台,可以用 DataGridView 这样的控件来显示数据库的表单数据,但在 C# 控制台项目中,如果有用到数据库查询,我们想看看查询语句的效果,就比较困难了,比如,我随意写了一个控制台输出,代码如下: using System.Data;namespace CSharpConnec…