当你经常爬取对方的网站,对方看你,呦这家伙频繁访问也太快了吧,肯定是个爬爬,得把他的IP封了,看他还怎么爬!
因此,这次教你怎么伪装自己的 IP 地址别让对方轻易的就把你给封掉。
那怎么伪装呢?
那接下来就是学习Python的正确姿势了!

其实对于Python来说,使用代理代理IP访问是很简单的。就拿我们经常使用的requests库来说,使用代理IP如下:

import requests#定义代理IP
proxie = {'http' : 'http://xx.xxx.xxx.xxx:xxxx','http' : 'http://xxx.xx.xx.xxx:xxx',....
}#使用代理IP
response = requests.get(url,proxies=proxies)

这样你就能使用代理IP去访问网站了,当然了,你会问我代理IP在哪?哪里来?
在网上有很多的免费的代理IP,一搜就是一大堆。
当然了你也知道,既然是免费的,肯定也有很多人去使用,而且也不稳定。
如果你有钱的话,市面上有人就专门提供代理IP的直接去买就行了。(真有钱,真是的爬个虫也得这样,也带带我~)

当然了我们的重点就是白嫖,不花钱了。
那么接下来就是重点了,开始真正的学习Python正确姿势了!

不想花钱?那我们可以搞个IP代理池!
道理呢大家都懂:
主要就是通过 python 程序去抓取网上大量免费的代理 ip ,然后定时的去检测这些 ip 可不可以用,那么下次你要使用代理 ip 的时候,你只需要去自己的 ip 代理池里面拿就行了。

现在的你是不是心痒痒的也想弄一个代理池了,当然了你也得有这个水平。哈哈

所以我现在推荐一个不错的开源的IP代理池

https://github.com/Python3WebSpider/ProxyPool

然后将它下载到本地就好。
接下来如果你需要配置一些相关信息,可以到它的proxypool目录下的setting.py里设置,比如Redis 的地址密码相关。
如果你没有Redis,那么你得快去下载了。这是必须需要的。下载地址请看下面:

https://github.com/MicrosoftArchive/redis/releases

前提Redis 安装完后,进行以下步骤

然后接下来找到你下载好的IP代理池文件夹,

第一步:安装上依赖包
pip install -r requirements.txt

步骤如下:
Shift+鼠标右键,选Windows PowerShell 窗口,然后在命令行输入命令。

第二步,运行run.py

步骤,直接在Windows PS窗口进行运行,
输入命令python run.py

项目跑起来后,不要关闭该窗口,然后接下来你就可以访问你的ip代理池了。

比如随机获取一个代理 ip 地址

http://localhost:5555/random

这样访问可以随机获取一个代理ip。

有了这样的条件,在代码中也不难实现:

import requestsPROXY_POOL_URL = 'http://localhost:5555/random'def get_proxy():try:response = requests.get(PROXY_POOL_URL)if response.status_code == 200:return response.text  # 如果该代理ip可用,返回该代理ipexcept ConnectionError:return None

这样我们就成功的在我们的代理池中获取代理 ip 了,那么下次谁还敢封你ip,你就拿出你的代理ip,继续爬,嘿嘿~

下面我给大家一个简单的实例来展现一下秀操作了.
通过代理ip来爬取京东的商品图片:

源代码如下:

import re
import os
from urllib import request
import requestsPROXY_POOL_URL = 'http://localhost:5555/random'def get_proxy():try:response = requests.get(PROXY_POOL_URL)if response.status_code == 200:return response.textexcept ConnectionError:return Noneheaders = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) ''AppleWebKit/537.36 (KHTML, like Gecko) ''Chrome/63.0.3239.132 Safari/537.36','upgrade-insecure-requests': '1',
}def gethtml(url):proxy = get_proxy()proxies = {'http': 'http://' + proxy}response = requests.get(url, headers = headers, proxies=proxies)html = response.textreturn htmldef geturllist(html):pattern = re.compile(r'data-lazy-img="//(.+?\.jpg)"',re.M)imglist = re.findall(pattern, html)return imglistdef downloadimgs(urllist):if not os.path.exists('pictures'):os.mkdir('pictures')x=1print('开始下载,共{count}张图片。'.format(count=len(urllist)))for imgurl in urllist:print('第{count}张图片。'.format(count=x))imgurl = "http://" + imgurlrequest.urlretrieve(imgurl,os.path.join('pictures','{num}.jpg'.format(num=x)))x+=1print('下载完成!')
if __name__=='__main__':url = 'https://search.jd.com/Search?keyword=cpu&enc=utf-8&wq=cpu&pvid=2fc2be2e40ba471399e67b5bbb0b82f2'html=gethtml(url)urllist=geturllist(html)downloadimgs(urllist)

都什么时代了还在裸爬吗,快用IP代理池吧!相关推荐

  1. python3爬虫系列19之反爬随机 User-Agent 和 ip代理池的使用

    python3爬虫系列19之随机User-Agent 和ip代理池的使用 我们前面几篇讲了爬虫增速多进程,进程池的用法之类的,爬虫速度加快呢,也会带来一些坏事!!! 1. 前言 比如随着我们爬虫的速度 ...

  2. python 爬取西刺ip代理池

    1. 如何在requests中设置ip代理 最直接的用法,在get中添加proxies设置ip代理 proxies = {'https': 'http://183.148.153.147:9999/' ...

  3. python通过ip池爬_python爬虫18 | 就算你被封了也能继续爬,使用IP代理池伪装你的IP地址,让IP飘一会...

    我们上次说了伪装头部 ↓ 让自己的 python 爬虫假装是浏览器 小帅b主要是想让你知道 在爬取网站的时候 要多的站在对方的角度想问题 其实 这和泡妞差不多 你要多站在妹纸的角度思考 她的兴趣是什么 ...

  4. [Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(四) —— 应对反爬技术(选取 User-Agent、添加 IP代理池以及Cookies池 )

    上一篇:[Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(三) -- 数据的持久化--使用MongoDB存储爬取的数据 最近项目有些忙,很多需求紧急上线,所以一直没能完善< 使用 ...

  5. 数据:快来爬我呀!小白:ip被封了 数据:做个ip代理池吧!这样就可以继续爬我了

    原标题:运用Python做一个ip代理池 前言: 作为对Python爬虫才一点的进步的小白,我对于IP代理池也不是很理解,如果没有达到读者的要求,还请见谅!我今天写的这篇文章主要是讲运用Python爬 ...

  6. 5 使用ip代理池爬取糗事百科

    从09年读本科开始学计算机以来,一直在迷茫中度过,很想学些东西,做些事情,却往往陷进一些技术细节而蹉跎时光.直到最近几个月,才明白程序员的意义并不是要搞清楚所有代码细节,而是要有更宏高的方向,要有更专 ...

  7. python爬取天天基金_python多线程+代理池爬取天天基金网、股票数据过程解析

    简介 提到爬虫,大部分人都会想到使用Scrapy工具,但是仅仅停留在会使用的阶段.为了增加对爬虫机制的理解,我们可以手动实现多线程的爬虫过程,同时,引入IP代理池进行基本的反爬操作. 本次使用天天基金 ...

  8. 打造IP代理池,Python爬取Boss直聘,帮你获取全国各类职业薪酬榜

    爬虫面临的问题 不再是单纯的数据一把抓 多数的网站还是请求来了,一把将所有数据塞进去返回,但现在更多的网站使用数据的异步加载,爬虫不再像之前那么方便 很多人说js异步加载与数据解析,爬虫可以做到啊,恩 ...

  9. 爬取西刺网实现ip代理池

    使用ip代理服务器可以防止在爬虫时被封本机ip.国内免费的高匿代理可以选择西刺网 总体目标是写一个爬虫,将这些字段保存在数据库中,然后筛选速度快的作为代理服务器,实现ip代理池. 在这里使用reque ...

最新文章

  1. 【全网之最】全网最简洁判断JavaScript中字符串是否以某一个特定字符串结尾的方法,多用于判断文件名的后缀(格式)
  2. 调用webservice 的时候没法输入参数
  3. Java8中的外观(JavaFX8)
  4. 资源放送丨《Oracle存储过程性能分析案例》PPT视频
  5. 【资料】翘首期盼247天!《阿里巴巴Java开发手册》扫描插件详情介绍
  6. 这个Wi-Fi安全漏洞偷跑了24年,可能危及全球所有设备!
  7. 关于HTML和CSS
  8. android tablelayout 点击,Android Design之TableLayout选项卡
  9. nano java_java – System.nanoTime()完全无用?
  10. 【转】Android自动化测试(UiAutomator)简要介绍
  11. word一键生成ppt 分页_一键实现Word转PPT的三种方法评测
  12. 6行代码生成全部6位数字密码字典
  13. python MyQR制作动态二维码
  14. 北大药学院院长被指涉嫌学术造假,同组院士做出回应
  15. 医院预约挂号系统的设计
  16. python怎么把ppt转成html,如何使用python把ppt转换成pdf
  17. 极客时间运维进阶训练营第二周作业
  18. 如何用手机APP实现PLC远程监控
  19. A股股票列表数据API接口(JSON标准格式,Get请求方式)
  20. 编辑Visio2016的自动对齐与粘附功能

热门文章

  1. 函数的this指向,call,apply bind改变this指向
  2. python修改屏幕分辨率_Python学习第150课——虚拟机切换鼠标状态以及调整桌面分辨率...
  3. 《CTF特训营》——利用特性实现的攻击
  4. cglib 的BeanCopier高性能解密
  5. SpringSecurity中文文档—Authentication— Authentication Architecture
  6. PHP实现自定义if条件、动态if条件判断(店铺会员卡等级规则判断的实现)
  7. vim实用指南(一):光标移动(2)——行内、行间移动
  8. 来自python的【set集合总结/frozenset】
  9. 加密(一)- 阮一峰:RSA算法原理
  10. 没有痛苦的博士求学经历,是不合格的!一位毕业了三十多名博士的中科院博导感言...