建立一个自己的代理IP池,随时更新用来抓取网站数据

fake_useragent使用示例

# 随机生成1个User-Agent
from fake_useragent import UserAgentua = UserAgent()
print(ua.random)

建立自己的IP代理池

import requests
import random
from lxml import etree
from fake_useragent import UserAgent# 生成随机的User-Agent
def get_random_ua():# 创建User-Agent对象ua = UserAgent()# 随机生成1个User-Agentreturn ua.random# IP访问测试网站: http://httpbin.org/get
url = 'http://httpbin.org/get'# 从西刺代理网站上获取随机的代理IP
def get_ip_list():headers = {'User-Agent': get_random_ua()}# 访问西刺代理网站国内高匿代理,找到所有的tr节点对象res = requests.get('https://www.xicidaili.com/nn/', headers=headers)parse_html = etree.HTML(res.text)# 基准xpath,匹配每个代理IP的节点对象列表ipobj_list = parse_html.xpath('//tr')# 定义空列表,获取网页中所有代理IP地址及端口号ip_list = []# 从列表中第2个元素开始遍历,因为第1个为: 字段名(国家、IP、... ...)for ip in ipobj_list[1:]:ip_info = ip.xpath('./td[2]/text()')[0]port_info = ip.xpath('./td[3]/text()')[0]ip_list.append({'http': 'http://' + ip_info + ':' + port_info,'https': 'https://' + ip_info + ':' + port_info})# 返回代理IP及代理池(列表ip_list)return ip_list# 主程序寻找测试可用代理
def main_print():# 获取抓取的所有代理IPip_list = get_ip_list()# 将不能使用的代理删除for proxy_ip in ip_list:try:# 设置超时时间,如果代理不能使用则切换下一个headers = {'User-Agent': get_random_ua()}res = requests.get(url=url, headers=headers, proxies=proxy_ip, timeout=5)res.encoding = 'utf-8'print(res.text)except Exception as e:# 此代理IP不能使用,从代理池中移除ip_list.remove(proxy_ip)print('%s不能用,已经移除' % proxy_ip)# 继续循环获取最后1个代理IPcontinue# 将可用代理保存到本地文件with open('proxies.txt','a') as f:for ip in ip_list:f.write(ip + '\n')if __name__ == '__main__':main_print()

写一个获取收费开放代理的接口

# getip.py
# 获取开放代理的接口
import requests# 提取代理IP
def get_ip_list():api_url = 'http://dev.kdlapi.com/api/getproxy/?orderid=996140620552954&num=100&protocol=2&method=2&an_an=1&an_ha=1&sep=1'res = requests.get(api_url)ip_port_list = res.text.split('\r\n')return ip_port_listif __name__ == '__main__':proxy_ip_list = get_ip_list()print(proxy_ip_list)

3、使用收费开放代理IP访问测试网站: http://httpbin.org/get

1、从代理网站上获取购买的普通代理的api链接
2、从api链接中提取出IP
3、随机选择代理IP访问网站进行数据抓取
from getip import *
import time
import randomurl = 'http://httpbin.org/get'
headers = {'User-Agent' : 'Mozilla/5.0'}
proxy_ip_list = get_ip_list()while True:# 判断是否还有可用代理if not proxy_ip_list:proxy_ip_list = get_ip_list()proxy_ip = random.choice(proxy_ip_list)proxies = {'http' : 'http://{}'.format(proxy_ip),'https' : 'https://{}'.format(proxy_ip)}print(proxies)try:html = requests.get(url=url,proxies=proxies,headers=headers,timeout=5,verify=False).textprint(html)breakexcept:print('正在更换代理IP,请稍后... ...')# 及时把不可用的代理IP移除proxy_ip_list.remove(proxy_ip)continue
  • 私密代理

语法格式

1、语法结构
proxies = {'协议':'协议://用户名:密码@IP:端口号'
}2、示例
proxies = {'http':'http://用户名:密码@IP:端口号','https':'https://用户名:密码@IP:端口号'
}

示例代码

import requests
url = 'http://httpbin.org/get'
proxies = {'http': 'http://309435365:szayclhp@122.114.67.136:16819','https':'https://309435365:szayclhp@122.114.67.136:16819',
}
headers = {'User-Agent' : 'Mozilla/5.0',
}html = requests.get(url,proxies=proxies,headers=headers,timeout=5).text
print(html)

python爬虫之如何建立一个自己的代理IP池相关推荐

  1. 教你创建一个免费的代理IP池(txt存储版本)

    教你创建一个免费的代理IP池(txt存储版本) 很多人可能会为爬虫被ban,IP被封等反爬机制苦恼,接下来我就教给大家如何白嫖做一个代理IP池. 准备工作 首先是准备工作,因为是第一个版本,因此我打算 ...

  2. 免费搭建一个自己的代理ip池

    之前教给大家怎样爬取彼岸网美女图片,不知道有多少小伙伴没有忍住多爬了几张图片导致自己的ip被封呢 这里教大家怎样搭建ip池,妈妈再也不我的ip被封了 首先有请今天的受害对象 快代理:http://ww ...

  3. 爬虫单个ip代理设置_爬虫怎么设置代理ip池?

    网络技术现在是如此发达,用户换ip再也不用自己手动来,很多ip代理都是傻瓜式操作,智能完成切换,完全不用使用者操心. 像在我们在利用网络爬虫开展数据采集,遇到爬取频率过高.频次过多的问题,会碰到ip被 ...

  4. Python爬虫-代理ip池建立

    代理IP池建立 前言 之前提到过urllib和requests的利用代理ip的访问方式 . https://blog.csdn.net/zhouchen1998/article/details/813 ...

  5. python:从零开始教你建立爬虫代理ip池

    一.为什么需要建立爬虫代理ip池 在众多的网站防爬措施中,有一种是根据ip的访问频率进行限制的,在某段时间内,当某个ip的访问量达到一定的阀值时,该ip会被拉黑.在一段时间内被禁止访问.这种时候,可以 ...

  6. 如何建立爬虫代理ip池

    目录 一.为什么需要建立爬虫代理ip池 二.如何建立一个爬虫代理ip池 原文地址:https://www.cnblogs.com/TurboWay/p/8172246.html 一.为什么需要建立爬虫 ...

  7. 构建一个给爬虫使用的代理IP池

    做网络爬虫时,一般对代理IP的需求量比较大.因为在爬取网站信息的过程中,很多网站做了反爬虫策略,可能会对每个IP做频次控制.这样我们在爬取网站时就需要很多代理IP. 代理IP的获取,可以从以下几个途径 ...

  8. [爬虫架构] 如何在分布式爬虫架构中动态维护一个代理IP池(付费代理)

    前言: 当分布式爬虫使用代理IP技术时,通过直接在爬虫程序中添加平台api接口的方式已经不能满足我们了,因为分布式的爬虫架构每秒的代理IP-URL的请求数会远远大于平台限制的请求频率,当然,对于没有限 ...

  9. Python3网络爬虫(十一):爬虫黑科技之让你的爬虫程序更像人类用户的行为(代理IP池等)

    转载请注明作者和出处:http://blog.csdn.net/c406495762 运行平台: Windows Python版本: Python3.x IDE: Sublime text3 前言 黑 ...

  10. 使用python多线程获取代理IP(代理IP池,附源码)

    @[TOC]使用python多线程获取代理IP(代理IP池,附源码) 代理IP池 都说现在是大数据的时代,大多数的厂商会特别的注重自己家的数据安全问题,但同时,也有着许多的行业是需要大数据来做支撑的, ...

最新文章

  1. 关于java中的字符流的一个使用例子
  2. python两个不同变量相加_Python:是否可以链接属于两个不同类的两个变量?
  3. 加密解密基础问题:字节数组和(16进制)字符串的相互转换
  4. codelite14中文语言包_CodeLite(C++跨平台开发环境) V 11.0.1 中文版
  5. VTK:图片之ImageMathematics
  6. 程序员必备:提升开发效率神器,强烈推荐 !!!
  7. 文件 云存储服务器配置,文件和存储服务器配置
  8. 排他网关(ExclusiveGateWay)
  9. [Java基础]LinkedHashSet集合概述和特点
  10. mysql 多键sequence_MySQL增多Sequence管理功能
  11. JSP — 如何设置jsp中cookie的过期时间
  12. java random()_JAVA的Random类的用法详解
  13. 脚本自动安装rkhunter检查rootkit
  14. 电脑键盘下划线怎么打_苹果电脑键盘失灵怎么办,维护方法!
  15. Android Binder -- AIDL 原理
  16. 网络故障排除的5款软件, 快速解决网络故障问题
  17. Number theory 1_2, To prove there is no rational solution of equation: x^2+y^2=7
  18. Unity Obi Cloth 教學
  19. [Netty]pipeline(二)
  20. 乔布斯经典演讲:《Stay Hungry Stay Foolish》主要讲了什么?对我们有什么启示?

热门文章

  1. 精品软件-每日更新2013-1112
  2. python+nodejs+Vue体检信息管理系统项目源码
  3. VS2015使用教程(使用VS2015编写C语言程序)
  4. java调用高拍仪获取图像_使用Java调用摄像头进行拍照源码
  5. iphone禁止 iOS 系统频繁提示更新tvos.mobileconfig下载
  6. win10 游戏等应用打开时闪退解决方案
  7. Shottr 免费好用的Mac 截屏软件
  8. .net xml转json
  9. php计算器源码,php 简单计算器
  10. J2EE学习篇之--Struts1详解