文章目录

  • Python爬虫——代理和代理池
    • 1、代理
    • 2、代理池

Python爬虫——代理和代理池

1、代理

代理用处:

  • 突破自身IP访问限制,访问国外资源

  • 访问单位或公司内部资源

  • 提高访问速度

  • 隐藏自身IP

许多网站都会在一定的时间段内,通过流量统计、系统日志等方式来判断某个IP的访问量,而当 IP的访问量超过正常用户的时候,就会被屏蔽。因此,我们一般都会建立一个代理,定期更换一个代理,即使这个 IP被屏蔽了,也可以换另一个 IP继续访问。

urllib 模块使用代理

urllib 模块使用代理步骤:

  • 需要先用代理构建一个ProxyHandler处理器的类,参数是一个字典类型,内容为代理类型和代理服务器IP和端口,

  • 然后用ProxyHandler实例构建opener对象,

  • 最后用opener对象调用open()方法发送请求。

使用实例:

import urllib.requesturl = 'http://www.ipaddress.my/?lang=zh_CN'headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.5261 SLBChan/10'
}request = urllib.request.Request(url=url,headers=headers)
#设置ip代理
proxy = {'http':'1.85.220.77:8118'}
#构建ProxyHandler处理器
handler = urllib.request.ProxyHandler(proxies=proxy)
#构建opener的对象
opener = urllib.request.build_opener(handler)
#调用open()方法发送请求
response = opener.open(request)content = response.read().decode('utf-8')file = open('myIP.html','w',encoding='utf-8')
file.write(content)

这些免费的代理IP通常有很多人在使用,而且有寿命短、速度慢、匿名度不高、HTTP/HTTPS支持不稳定等缺点,在访问url时可能会被拒绝访问:

如果需要使用高品质的安全的代理,可以在这购买

2、代理池

IP代理池

代理池就是自己去收集网上的可用免费代理,自建自己的代理池。然后在使用的时候从代理池中随机选择一个代理去访问网站。避免总是使用同一个IP去访问网站,减低被网站屏蔽的风险。

使用实例:自定义简易版的代理池

import randomproxy_list = [{"http" : "202.55.5.209:8090"},{"http" : "101.200.127.149:3129"},{"http" : "220.168.52.245:53548"},{"http" : "121.13.252.58:41564"},{"http" : "47.106.105.236:80"}
]
# 随机选择一个代理
proxy = random.choice(proxy_list)

补充:User-Agent (用户代理)池,类似IP代理池,就是把多个浏览器的User-Agent数据放入列表中,然后再从中随机选择一个来使用。

使用User-Agent (用户代理)池,能够避免总是使用一个 User-Agent来访问网站,因为短时间内总使用同一个 User-Agent高频率访问的网站,可能会引起网站的警觉,从而屏蔽掉 IP。

自定义简易User-Agent (用户代理)池:

ua_list = ['Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0','Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11','User-Agent:Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11','Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1','Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)','Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50','Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0',' Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1',' Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1',
]

Python爬虫——代理和代理池相关推荐

  1. 怎样使用python爬虫获得免费代理IP

    怎样使用python爬虫获得免费代理IP 进行爬取和测试有效性 总结 爬虫一直是python使用的一个重要部分,而许多网站也为此做了许多反爬措施,其中爬虫访问过于频繁直接封ip地址也作为一种" ...

  2. Python爬虫——建立IP代理池

    在使用Python爬虫时,经常遇见具有反爬机制的网站.我们可以通过伪装headers来爬取,但是网站还是可以获取你的ip,从而禁掉你的ip来阻止爬取信息. 在request方法中,我们可以通过prox ...

  3. 干货分享,使用python爬虫构建免费代理IP池

    在使用python爬虫的时候,经常会遇见所要爬取的网站采取了反爬取技术,高强度.高效率地爬取网页信息常常会给网站服务器带来巨大压力,所以同一个IP反复爬取同一个网页,就很可能被封,那如何解决呢?使用代 ...

  4. python 爬虫如何使用代理IP

    python3 爬虫如何使用代理IP 前言 众所周知,爬虫速度过快,频繁访问都会被封IP,怎么解决这个问题呢?再去换一台设备?先不说数据是否同步,仅仅换个设备的成本就不低,这个时候就需要代理IP了.以 ...

  5. 干货|Python爬虫如何设置代理IP

    在学习Python爬虫的时候,经常会遇见所要爬取的网站采取了反爬取技术导致爬取失败.高强度.高效率地爬取网页信息常常会给网站服务器带来巨大压力,所以同一个IP反复爬取同一个网页,就很可能被封,这里讲述 ...

  6. Python爬虫(使用代理)

    代理 代理是什么? · 代理是指允许一个网络终端通过这个服务与另一个网络终端进行非直接的连接提供代理服务的计算机系统或其他类型的网络   终端称为代理服务器,是提供代理服务的计算机系统或其他类型的网络 ...

  7. 【python爬虫】使用代理IP进行网站爬取

    我使用代理IP是为了刷票,公司参加了比赛,投票规则是每IP只能投8票,并没有每天刷新还是永久限制,无奈之下使用代理IP, 代理ip网址 http://www.goubanjia.com/ http:/ ...

  8. Python爬虫基础-使用代理

    为什么需要代理? 我们爬取数据的时候,开始可以正常爬取,但是过了一段时间,网站可能就会提示"您的IP访问频率过高",然后就无法正常访问网站. 这是因为网站采取了反爬策略,某个ip访 ...

  9. Python爬虫 教程:IP池的使用

    一.简介 爬虫中为什么需要使用代理 一些网站会有相应的反爬虫措施,例如很多网站会检测某一段时间某个IP的访问次数,如果访问频率太快以至于看起来不像正常访客,它可能就会禁止这个IP的访问.所以我们需要设 ...

  10. (廿九)Python爬虫:IP代理池的开发

    作为一个爬虫开发者,使用IP代理是必要的一步,我们可以在网上找到免费的高匿IP,比如西刺代理.但是,这些免费的代理大部分都是不好用的,经常会被封禁.所以我们转而考虑购买付费代理.可是,作为一个程序员首 ...

最新文章

  1. Android中使用httpclient访问服务器,需要session功能
  2. 写好python的代码怎么放在spark上跑_Spark精华问答 | spark的组件构成有哪些?
  3. Openstack Restful API 开发框架 Paste + PasteDeploy + Routes + WebOb
  4. leetcode算法题--删除排序链表中的重复元素 II
  5. 跨国婚姻登记指南是怎样的一个流程呢??
  6. 敏捷开发模式下如何更好的进行测试
  7. java编写记事本程序出现图形,高手帮忙啊,老师布置了一个作业,要用java编写一个记事本程序...
  8. Springboot的异步、定时、邮件任务
  9. 大数据_Hbase_面试题0001
  10. jdk版本修改不生效
  11. 第二节:使用反射构建动态可扩展应用程序
  12. SAP GUI 710 PATCH 12 下载地址
  13. 在emacs里用w3m浏览网页
  14. 阿里云服务器centos7 安装docker 和docker-compose 及相关命令
  15. 服务器的mdf文件怎么打开,mdf文件,教您mdf文件怎么打开
  16. Dart学习3、数据类型详解
  17. CSS 层叠样式表(2)
  18. 2017年应届生落户上海流程简介
  19. 腾讯会议突围背后:端到端实时语音技术是如何保障交流通畅的?
  20. 弹性计算双周刊 第20期

热门文章

  1. 需要时才去度秘一下,不如苍老师主动找你服务一下
  2. 如何给select标签赋初值
  3. 韩语 计算机术语,韩语之计算机互联网词汇1
  4. Internal_Covariate_Shift现象以及Batch Normalization的可视化
  5. 静态数据成员与非静态数据成员的区别
  6. Python 实现 傅里叶级数 对 函数拟合 并绘图
  7. [转]嵌入式Linux图形系统
  8. 适合学生党的蓝牙耳机什么牌子好?高颜值音质好蓝牙耳机推荐
  9. 在keil中添加stc系列单片机型号(模型)方法
  10. CAD参数绘制点(com接口)