一般情况下,我并不建议使用自己的IP来爬取网站,而是会使用代理IP。

原因很简单:爬虫一般都有很高的访问频率,当服务器监测到某个IP以过高的访问频率在进行访问,它便会认为这个IP是一只“爬虫”,进而封锁了我们的IP。

那我们爬虫对IP代理的要求是什么呢?

  • 1、代理IP数量较多,可以减低被封锁的概率;
  • 2、IP生命周期较短,因为没钱o(´^`)o。

接下来,就讲一下从购买代理IP到urllib配置代理IP的全过程。

购买代理IP:

代理IP的中间商有很多,我们以无忧代理为例。

  1. 这里共有4套餐,我们选择第一个“¥10”套餐,进入详情界面:

  2. 竟然更便宜了,只要8.5???买!

    (我真的没拿无忧代理的广告费......)
  3. 购买成功之后,我们点击“创建API接口”:

  4. 获取HTTP爬虫代理IP的API链接:

配置代理IP:

  1. 我们先调用下接口试一下:
import urllib.request as ur

proxy_address = ur.urlopen('http://api.ip.data5u.com/dynamic/get.html?order=d314e5e5e19b0dfd19762f98308114ba&sep=4').read()
print(proxy_address)
  1. 由于返回结果为字节,我们还需对其进行utf-8格式转换,以及去空格:
proxy_address = proxy_address.decode('utf-8').strip()

输出如下:

  1. 创建proxy_handler:
proxy_handler = ur.ProxyHandler(
{
'http': proxy_address
}
)
  1. 新建opener对象:
proxy_opener = ur.build_opener(proxy_handler)
  1. 使用代理IP进行访问并输出:
request = ur.Request(url='https://edu.csdn.net/')
# open == urlreponse,只是进行了代理IP封装
reponse = proxy_opener.open(request).read().decode('utf-8')
print(reponse)

输出如下:

全文完整代码:

import urllib.request as ur

proxy_address = ur.urlopen('http://api.ip.data5u.com/dynamic/get.html?order=d314e5e5e19b0dfd19762f98308114ba&sep=4').read().decode('utf-8').strip()
# print(proxy_address) # 创建proxy_handler
proxy_handler = ur.ProxyHandler(
{
'http': proxy_address
}
)
# 新建opener对象
proxy_opener = ur.build_opener(proxy_handler) request = ur.Request(url='https://edu.csdn.net/')
# open == urlreponse,只是进行了代理IP封装
reponse = proxy_opener.open(request).read().decode('utf-8')
print(reponse)

为我心爱的女孩~~

最新文章

  1. Windows_RTM_RC
  2. 从零开始设计SOA框架(三):请求参数的加密方式
  3. 号外号外:9月13号《Speed-BI云平台案例实操--十分钟做报表》开讲了
  4. C#_接口
  5. SVN使用报错 Synchronize operation failed. RA layer request failed svn: REPORT request on
  6. DPDK多核多线程机制简析
  7. Android应用程序窗口(Activity)的测量(Measure)、布局(Layout)和绘制(Draw)过程分析
  8. oracle表设置主键自增长
  9. PPPOE 模拟环境搭建
  10. 用linux 命令 执行ci框架的方法
  11. Ceph BlueStore 解析:Object IO到磁盘的映射
  12. 【.net 深呼吸】WPF 中的父子窗口
  13. svn up出现类似svn: Error converting entry in directory '.' to UTF-8问题解决
  14. linux服务器 jboss-7安装
  15. 深入了解servlet
  16. 17python-BS编程
  17. ERP项目实施记录03
  18. Linux内核学习笔记二——进程
  19. Java的OOP三大特征之一——多态
  20. 【转】shell expect spawn、linux expect 用法小记 看着舒服点

热门文章

  1. Tensorflow中的图(tf.Graph)和会话(tf.Session)详解
  2. rabbitMQ初始化配置
  3. tp框架数据查询,增删改
  4. TableStore最佳实践:GEO索引打造店铺搜索系统
  5. php多张图片打包下载
  6. PostgreSQL的约束
  7. Redis入门很简单之二【常见操作命令】
  8. PHP生成PDF完美支持中文,解决TCPDF乱码
  9. z-index只能用在定位元素上
  10. jQuery.inArray()方法