前言

  • 首先说一下代理IP的用法途(代码中会有涉及):代理IP可以用来隐藏你的真实IP,你访问网站是通过代理服务器来做一个中转,所以目标服务器只能看到代理服务器的IP地址,这样就可以让你的IP地址实现隐身的功能

准备工作

  • 我这边是找到了一个平台:https://www.kuaidaili.com/,先在地址后面加robots.txt查看平台的robots协议(https://www.kuaidaili.com/robots.txt)如下,可以看到平台未明令禁止爬虫爬取的页面,那我们就可以放心爬了。
  • 按f12分析一下页面先,左上角箭头选中ip之后直接右键复制XPath。
  • 测试后发现,IP不是通过接口传输的,而是存在在静态页面上,这就省事很多了。
  • 并且,点击下一页后,url变化很小。
  • url很简单,这里就不过多分析了,直接上代码。

上代码

  • 首先爬取前五页。(这里要注意加上headers模拟浏览器访问)
#爬取数据def get_ip():for page in range(1,5):print("=============================正在抓取第{}页数据==============".format(page))base_url = 'https://www.kuaidaili.com/free/inha/{}/'.format(page)headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0'}response = requests.get(base_url,headers=headers)data = response.text#print(data)html_data = parsel.Selector(data)# 解析数据parsel_list = html_data.xpath('//table[@class="table table-bordered table-striped"]/tbody/tr')for tr in parsel_list:proxies_dict = {} http_type = tr.xpath('./td[4]/text()').extract_first()  #用xpath找到目标ip_num = tr.xpath('./td[1]/text()').extract_first()ip_port = tr.xpath('./td[2]/text()').extract_first()proxies_dict[http_type] = ip_num + ':' + ip_port    #将ip地址和端口号用":"连接proxies_list.append(proxies_dict)print(proxies_dict)time.sleep(0.5) print(proxies_list) print("获取到的代理ip数量:",len(proxies_list))return proxies_list
  • 然后,考虑到有些ip能用,有些ip不能用,所以需要对其进行清洗。剔除不能用的或反应慢的。这里可以试着用代理ip访问一下百度首页,并检测返回状态来确定ip是否可用。
def check_ip(proxies_list):"""检测代理ip的质量"""headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0'}can_use = []for proxy in proxies_list:try:response = requests.get('https://www.baidu.com',headers=headers,proxies=proxy,timeout=0.08)         #代理ip使用方式,如果要筛选更快的ip,timeout可适当降低if response.status_code == 200: #返回状态码为200即为可用can_use.append(proxy)except Exception as e:print(e)return can_use
  • 简单组合一下,爬取部分就算搞完了。
ip_list = get_ip()  #获取IP
can_use = can_use(ip_list) #清洗IP

代理IP使用

  • 这是我当时脑门一热想到的通过用代理ip进入直播间来增加人气,实验后发现,我太天真了,实验失败,根本不能增加人气,各位可以传入别的网址来实现用代理IP访问固定网站,can_use参数就传入上面得到的can_use就行。
def start(url,can_use):headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0'}for proxy in can_use:try:response = requests.get(url,headers=headers,proxies=proxy,timeout=1)if response.status_code == 200:print("进入直播间。。。")except Exception as e:print(e)
  • 其次,我觉得如果用代理IP爬取网站内容的话,可能会绕过网站的反爬策略,只是思考了一下,并未实践。
  • 或者也可以将代理IP写入数据库,留着慢慢用。
# 入库
def engine_in(ip_list):conn = pymysql.connect(host='localhost',user='root',password='123',database='size',port=3306) #连接数据库cursor = conn.cursor()for ip in ip_list:sql = "INSERT INTO ip(ip) values('" + ip + "');" #SQL语句cursor.execute(sql) #执行SQL语句conn.commit()conn.close()

后记

  • Tip:写爬虫前首先要看一下该网站的robots.txt协议是否允许爬取,在其允许范围内适当爬取数据。

爬取代理ip的想法是我从某学习平台学到的,若有冒犯,请联系删除

记一次用Python爬取代理IP并使用(尝试用代理IP制造直播房间访问量)相关推荐

  1. PYTHON爬取斗鱼英雄联盟所有在玩adc的主播房间信息

    Python爬取斗鱼英雄联盟所有玩adc的主播房间信息并用redis存储数据 最近想要用巩固下json数据的提取以及数据的存储,于是选了斗鱼作为研究对象.. 下面就是所有要爬取的adc,当然有个别ad ...

  2. python爬取高匿代理IP(再也不用担心会进小黑屋了)

    一起进步 为什么要用代理IP 很多数据网站,对于反爬虫都做了一定的限制,这个如果写过一些爬虫程序的小伙伴应该都深有体会,其实主要还是IP进了小黑屋了,那么为了安全,就不能使用自己的实际IP去爬取人家网 ...

  3. 带你用Python爬取代理

    带你用Python爬取代理 第一步 导入库: import requests,xml.etree.ElementTree as ET 说明: Requests:请求库,用于请求API网址 xml.et ...

  4. 手把手教你使用Python爬取西刺代理数据,不用担心我封IP了!

    /1 前言/ 前几天小编发布了手把手教你使用Python爬取西次代理数据(上篇),木有赶上车的小伙伴,可以戳进去看看.今天小编带大家进行网页结构的分析以及网页数据的提取,具体步骤如下. /2 首页分析 ...

  5. Python爬取代理IP

    在一些网页的内容爬取过程中,有时候在单位时间内如果我们发送的请求次数过多,网站就可能会封掉我们的IP地址,这时候为了保证我们的爬虫的正常运行,我们就要使用代理IP. 下面来介绍如何构建自己的IP池. ...

  6. Python爬取京东商品评论数据

    一.前言 本文将承接笔者的上篇文章Python爬取京东商品数据,使用京东商品唯一id字段"sku"拼接url,得到真实的京东商品评论网址,进而解释数据并保存到文件中,所爬取到的数据 ...

  7. Python 爬取51cto博客标题浏览量、评论量、收藏

    介绍 提到爬虫,互联网的朋友应该都不陌生,现在使用Python爬取网站数据是非常常见的手段,好多朋友都是爬取豆瓣信息为案例,我不想重复,就使用了爬取51cto博客网站信息为案例,这里以我的博客页面为教 ...

  8. 在当当买了python怎么下载源代码-Python爬取当当网APP数据

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于AirPython ,作者星安果 目标 场景:有时候通过传统的方法去 ...

  9. Python爬取大量数据时,如何防止IP被封

    前两天我爬取了猪八戒上的一些数据网址::http://task.zbj.com/t-ppsj/p1s5.html,可能是由于爬取的数据量有点多吧,结果我的IP被封了,需要自己手动来验证解封ip,但这显 ...

最新文章

  1. mysql迅速搭建网页_Django + mysql 快速搭建简单web投票系统
  2. 关于extjs中动态添加TabPanel的tab项并以iframe显示的整理(转)
  3. 基于VHDL自动售邮票机设计
  4. php 字符串中文截取,PHP 截取中文字符串(支持多种编码)
  5. springAOP与注解
  6. 计算机与未来的教育阅读答案,作文:计算机与未来的教育
  7. 第十讲 线性反馈移位寄存器
  8. 平台H5对接支付宝支付接口(含分布式源码)
  9. c语言表达ch是大写英文字母,如何用C语言输出26个英文字母和其ascii码的对照表...
  10. 使用 libgps 库获取gps数据
  11. 高德地图 poi 搜索
  12. LaTeX的入门使用(新手使用向)
  13. (转)iOS Wow体验 - 第四章 - 为应用的上下文环境而设计
  14. 【Android 电量优化】电量优化 ( 唤醒锁定 | 使用 WeakLock 保持服务唤醒 | 屏幕唤醒 )
  15. 每周精品之读书20190325腾讯传1998-2016:中国互联网公司进化论
  16. 机械臂动力学--加速度计算
  17. 四元数解算欧拉角MATLAB程序
  18. Ribbon实现Eureka负载均衡
  19. Java入门基础:剪刀石头布小游戏,练习if else和while等
  20. 苹果 iOS 16.0.3 正式版发布:修复 iPhone 14 Pro / Max 通知延迟、相机启动慢等问题

热门文章

  1. 祝福墙html源码,蔡徐坤迎22岁生日,祝福墙仅一个大V留言,ikun:不爱都难
  2. 今日头条2017校园招聘 春招4.18笔试
  3. SpringBoot - 后端数据校验的实现
  4. Jupyter Notebook使用手册
  5. 阻止手指缩放手机浏览器页面
  6. 修改C盘系统文件 Hosts 两种方法
  7. 几个月前自己写的淘宝旺店助手
  8. 评论:B2Cer,其实您既不电子,也不商务
  9. 如何修改Git上的名字
  10. Ubuntu 22.04 震撼登场!!!