python爬虫设置代理ip池
在使用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
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池相关推荐
- python爬虫设置代理ip池——方法(一)
""" 在使用python爬虫的时候,经常会遇见所要爬取的网站采取了反爬取技术,高强度.高效率地爬取网页信息常常会给网站服务器带来巨大压力,所以同一个IP反复爬取同一个网 ...
- Python爬虫添加代理IP池(新手)
给爬虫添加代理IP池 我们在运行爬虫的过程中由于请求次数过多经常会遇到被封IP的情况,这时就需要用到代理IP来解决.代理IP的原理,简单来说就像在本机和web服务器之间开一个中转站,把本机的请求交给代 ...
- 使用爬虫实现代理IP池之放弃篇
2019独角兽企业重金招聘Python工程师标准>>> 啥叫代理IP以及代理IP池 概念上的东西网上搜索一下就好了,这里简单科普一下(大部分会读这篇文章的人,基本是不需要我来科普的) ...
- 利用多线程爬虫搭建代理ip池的两种方法(含源码)
搭建爬虫代理ip池的两种方法(含源码) 前言 一.ip池是什么? 二.爬取原理 三.使用步骤 方法一 爬取网站https://www.kuaidaili.com/ 验证 存取到mysql 方法二 爬取 ...
- Python 爬虫使用代理 IP 的正确方法
代理 IP 是爬虫中非常常用的方法,可以避免因为频繁请求而被封禁.下面是 Python 爬虫使用代理 IP 的正确方法: 1. 选择可靠的代理 IP 供应商,购买或者免费使用代理 IP 列表. 2. ...
- Python之爬虫 搭建代理ip池
文章目录 前言 一.User-Agent 二.发送请求 三.解析数据 四.构建ip代理池,检测ip是否可用 五.完整代码 总结 前言 在使用爬虫的时候,很多网站都有一定的反爬措施,甚至在爬取大量的数据 ...
- 爬虫单个ip代理设置_爬虫怎么设置代理ip池?
网络技术现在是如此发达,用户换ip再也不用自己手动来,很多ip代理都是傻瓜式操作,智能完成切换,完全不用使用者操心. 像在我们在利用网络爬虫开展数据采集,遇到爬取频率过高.频次过多的问题,会碰到ip被 ...
- python进行爬虫设置代理ip之后不知道是否已经启用代理ip
设置代理ip: 根据每个代理平台的格式不同,代理设置的方式也不尽一致,这里进行演示芝麻代理的配置: def ip_get():url = '形成的代理的链接'ip_list_con = request ...
- Python爬虫 教程:IP池的使用
一.简介 爬虫中为什么需要使用代理 一些网站会有相应的反爬虫措施,例如很多网站会检测某一段时间某个IP的访问次数,如果访问频率太快以至于看起来不像正常访客,它可能就会禁止这个IP的访问.所以我们需要设 ...
最新文章
- keras 的 example 文件 cnn_seq2seq.py 解析
- 突破屏蔽限制,自己的网站使劲弹新IE窗口
- iOS开发之详解正则表达式
- #4 什么是shell与bash的特性
- 查询DBA_HIST_ACTIVE_SESS_HISTORY缓慢
- apache大师+伪静态_Apache开启伪静态示例
- python文件按行读取变为嵌套列表_迭代两个嵌套的2D列表,其中list2具有list1的行号...
- 用MATLAB将矩阵数据写入txt文件中,打开乱码原因
- [翻译] 编写高性能 .NET 代码--第二章 GC -- 配置选项
- Python学习笔记:闭包与作用域
- 《BI那点儿事》ETL中的关键技术
- NOIP模拟题——tractor
- EasyUI:datagrid清空所有选择行
- 生物信息学常见1000个软件的安装代码
- 信息学奥赛一本通(1079:计算分数加减表达式的值)
- word中“项目符号”和后面的文字间隔太远
- 高逼格的console.log(),要不来看下
- 代谢组学数据分析及网络药理学研究技术与实践
- Blazor —— 母版页的定义和使用(Layout)
- HDR相关标准-HLG/HDR10/HDR10+/DOLBY VISION