"""

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

以下介绍的免费获取代理ip池的方法:

优点:

1.免费

缺点:

1.代理ip稳定性差需要经常更换

2.爬取后ip存在很多不可用ip需要定期筛选

小建议:

该方法比较适合学习使用,如果做项目研究的话建议参考本人博客《python爬虫设置代理ip池——方法(二)》,购买稳定的代理ip

"""

一.主要思路

1.从代理ip网站爬取IP地址及端口号并储存

2.验证ip是否能用

3.格式化ip地址

4.在requests中使用代理ip爬取网站

二. 写在前面

在Requests中使用代理爬取的格式是
import requests
requests.get(url, headers=headers,proxies=proxies)
其中proxies是一个字典其格式为:
对每个ip都有
proxies = {
http: 'http://114.99.7.122:8752'
https: 'https://114.99.7.122:8752'
}
注意:
对于http和https两个元素,这里的http和https
代表的不是代理网站上在ip后面接的类型
代表的是requests访问的网站的传输类型是http还是https

你爬的网站是http类型的你就用http,如果是https类型的你就用https,在代理网站上爬的时候也要分别爬http或https的ip

三.代码

1.配置环境,导入包

# IP地址取自国内髙匿代理IP网站:http://www.xicidaili.com/nn/
# 仅仅爬取首页IP地址就足够一般使用from bs4 import BeautifulSoup
import requests
import random
 headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'}

2.获取网页内容函数

def getHTMLText(url,proxies):try:r = requests.get(url,proxies=proxies)r.raise_for_status()r.encoding = r.apparent_encodingexcept:return 0else:return r.text

3.从代理ip网站获取代理ip列表函数,并检测可用性,返回ip列表

def get_ip_list(url):web_data = requests.get(url,headers)soup = BeautifulSoup(web_data.text, 'html')ips = soup.find_all('tr')ip_list = []for i in range(1, len(ips)):ip_info = ips[i]tds = ip_info.find_all('td')ip_list.append(tds[1].text + ':' + tds[2].text)
#检测ip可用性,移除不可用ip:(这里其实总会出问题,你移除的ip可能只是暂时不能用,剩下的ip使用一次后可能之后也未必能用)for ip in ip_list:try:proxy_host = "https://" + ipproxy_temp = {"https": proxy_host}res = urllib.urlopen(url, proxies=proxy_temp).read()except Exception as e:ip_list.remove(ip)continuereturn ip_list

4.从ip池中随机获取ip列表

def get_random_ip(ip_list):proxy_list = []for ip in ip_list:proxy_list.append('http://' + ip)proxy_ip = random.choice(proxy_list)proxies = {'http': proxy_ip}return proxies

5.调用代理

if __name__ == '__main__':url = 'http://www.xicidaili.com/nn/'ip_list = get_ip_list(url)proxies = get_random_ip(ip_list)print(proxies)

python爬虫设置代理ip池——方法(一)相关推荐

  1. python爬虫设置代理ip池

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

  2. Python爬虫添加代理IP池(新手)

    给爬虫添加代理IP池 我们在运行爬虫的过程中由于请求次数过多经常会遇到被封IP的情况,这时就需要用到代理IP来解决.代理IP的原理,简单来说就像在本机和web服务器之间开一个中转站,把本机的请求交给代 ...

  3. 利用多线程爬虫搭建代理ip池的两种方法(含源码)

    搭建爬虫代理ip池的两种方法(含源码) 前言 一.ip池是什么? 二.爬取原理 三.使用步骤 方法一 爬取网站https://www.kuaidaili.com/ 验证 存取到mysql 方法二 爬取 ...

  4. Python 爬虫使用代理 IP 的正确方法

    代理 IP 是爬虫中非常常用的方法,可以避免因为频繁请求而被封禁.下面是 Python 爬虫使用代理 IP 的正确方法: 1. 选择可靠的代理 IP 供应商,购买或者免费使用代理 IP 列表. 2. ...

  5. 使用爬虫实现代理IP池之放弃篇

    2019独角兽企业重金招聘Python工程师标准>>> 啥叫代理IP以及代理IP池 概念上的东西网上搜索一下就好了,这里简单科普一下(大部分会读这篇文章的人,基本是不需要我来科普的) ...

  6. Python之爬虫 搭建代理ip池

    文章目录 前言 一.User-Agent 二.发送请求 三.解析数据 四.构建ip代理池,检测ip是否可用 五.完整代码 总结 前言 在使用爬虫的时候,很多网站都有一定的反爬措施,甚至在爬取大量的数据 ...

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

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

  8. python进行爬虫设置代理ip之后不知道是否已经启用代理ip

    设置代理ip: 根据每个代理平台的格式不同,代理设置的方式也不尽一致,这里进行演示芝麻代理的配置: def ip_get():url = '形成的代理的链接'ip_list_con = request ...

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

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

最新文章

  1. UVA11991第k次出现的v的下标
  2. 【ArcGIS风暴】如何将矢量数据(点、线、面)折点坐标转为GeoJSON格式?
  3. 使用wxWidgets编程——第一步
  4. linux-压缩与解压缩
  5. 平面/UI设计师社区交流网站集设|给你的作品多一个展示机会
  6. 解决php中json_decode的异常JSON_ERROR_CTRL_CHAR
  7. matlab中memory模块初始值,Matlab的memory模块消除代数环
  8. NumPy 简单应用
  9. Wireshark实战分析之IP协议(三)
  10. mysql-plus多数据库_MyBatis-Plus实现多数据源的示例代码
  11. linux 一键安装字体,在deepin中一键安装喜欢的字体,文档气质瞬间提升!
  12. 远控免杀从入门到实践(2)工具总结篇
  13. win7 开WiFi共享
  14. vscode如何更换主题
  15. 利用WireShark分析H264码流
  16. 苹果cms模板_苹果cmsv10高端模板有哪些?
  17. Windows漏洞修复服务器,三种Windows服务器SSL/TLS的安全漏洞以及其补救方法
  18. MATLAB设计控制系统仿真实验,基于MATLAB的自动控制原理实验仿真系统的设计
  19. 关于google搜索
  20. 车用乙烯基薄膜市场现状及未来发展趋势

热门文章

  1. Content-Type详解
  2. 创建全局AD组与用户
  3. 如何从计算机截屏到U盘,电脑要怎么截图
  4. 如何才能让区块链技术避免成为一个口号?
  5. 图像识别-pytorch-Figure size 640x480 with 1 Axes
  6. 飞航武器装备测试系统ETest
  7. 【第十六篇】 理想视口pc端浏览器移动端浏览器元素单位
  8. Android 特效之炫酷水波纹动画
  9. Android图表控件MPChart-柱状+折线组合图表基本使用
  10. 成就DBA的职业生涯(转载)