利用爬虫获取免费IP代理
项目目标
通过爬虫获取“西拉代理”(http://www.xiladaili.com)上的高匿代理,并储存至一个列表。
项目分析
首先对网页进行观察,主体内容如下图所示。
不但指明了代理IP、协议类型,还有存活时间、打分这些数据。有需要的朋友,可以根据存活时间、打分来有选择性地挑选一些代理,这样获得的代理更加稳定。我仅展示最朴素的方法,即爬取网页上的所有代理。
网页下方有翻页按钮,点击不同页码,可以看到网页url也是非常有规律地在变动。
一看到这么规整的数据展示,就想到了表格。我们打开浏览器的开发者模式,定位到这一片数据的源代码。可以看到的所有的数据都藏在名为tbody节点中。
整个项目的思路大致有了,大体有以下三个步骤:
①访问相关页面,读取网页源代码;
②在网页源代码中定位到tbody,从中提取每一行的IP等数据;
③保存至列表中。
在代码实现阶段,我们用selenium模拟浏览器的访问,用BeautifulSoup来解析网页源代码。
from selenium import webdriverimport numpy as npfrom bs4 import BeautifulSoupdef getFreeProxy(url):# %%打开Chrome浏览器,模拟访问网站browser = webdriver.Chrome(executable_path="chromedriver.exe")pageNumber = np.random.choice(300) + 1 # 改成自己要爬的页面号,我这里就随机挑选一个页面browser.get(url + str(pageNumber)) # 步骤一代码# %% 解析代理数据soup = BeautifulSoup(browser.page_source, "html.parser") # 步骤二代码proxies = [(r.text.strip().split()[0], r.text.strip().split()[1]) for r in soup.find("tbody").find_all("tr")] # 步骤三代码return proxiesif __name__=="__main__":url = "http://www.xiladaili.com/gaoni/"getFreeProxy(url)
(步骤三代码这么写,是观察到每一行的数据都保存在tbody节点的一个子节点tr中,本项目中我只关心代理IP地址和代理协议类型,只取了前两列的数据)
至此已经完成了我们的基本功能。
改进一:获取的很多代理实际上是不可用的,能不能筛选一下,只保留能用的代理呢?
改进二:虽然在改进一中,我们显示地指定了浏览器通过代理IP访问网页,我能不能确认一下,实际访问网页的IP就是代理IP而不是本机IP呢?
改进三:当我跑这段代码频繁访问西拉代理的时候,有时候好几秒网页都加载不出来,这是怎么回事?
项目收获
利用爬虫获取免费IP代理相关推荐
- 爬虫利器:Python获取免费IP代理
由于现在很多网站都有反爬虫机制,同一个ip不能频繁访问同一个网站,这就使得我们在进行大量数据爬取时需要使用代理进行伪装,本博客给出几个免费ip代理获取网站爬取ip代理的代码,可以嵌入到不同的爬虫程序中 ...
- 你爱我,我爱你,IP被封很头疼【Python爬虫实战:ip代理js逆向采集】
大家好,我是辣条. 一见不日甚是...应该是一日不见甚是想念[串台了,这是郭德纲老师相声里的梗]. 直接进入今天的主题,相信学过爬虫的朋友们都知道爬虫封ip十分头疼,辣条今天带你获取免费ip代理 爬取 ...
- 免费IP代理池定时维护,封装通用爬虫工具类每次随机更新IP代理池跟UserAgent池,并制作简易流量爬虫...
前言 我们之前的爬虫都是模拟成浏览器后直接爬取,并没有动态设置IP代理以及UserAgent标识,这样很容易被服务器封IP,因此需要设置IP代理,但又不想花钱买,网上有免费IP代理,但大多都数都是不可 ...
- Python每日一练(24)-requests 模块获取免费的代理并检测代理 IP 是否有效
目录 1. 通过代理服务发送请求 2. 获取免费的代理 IP 3. 检测代理 IP 是否有效 1. 通过代理服务发送请求 在爬取网页的过程中,经常会出现不久前可以爬取的网页现在无法爬取的情况,这是因为 ...
- Python创建免费Ip代理池,伪装Ip。
Python创建免费Ip代理池 主要使用requests第三方库.欸嘿,有了这个,就不用花钱买Ip了,生活小妙招.妙哇. 一.具体思路 1.利用requests爬取免费代理Ip的网页 2.存储列表后, ...
- 使用免费ip代理进行投票
只要是投票系统,必然要限制一个用户投多张票. 如何限制呢?限制ip是最直观最简单的思路,可是代理池可以解决限制ip的情况. 如果投票页面前面加上一个验证码,那程序就会有点困难了. 有些投票使用微信号, ...
- win7 asp虚拟服务器,win7怎么利用ASP获取服务器IP地址 win7利用ASP获取服务器IP地址教程...
win7系统浏览器打开的网页查看服务器ip地址,网络上浏览的网页都是放在服务器上的,那么怎样用ASP获取服务器ip地址呢?今天小编给大家带来ASP获取服务器IP地址的方法,请一起看看下文详细介绍吧. ...
- 利用爬虫获取猫眼电影热门前100数据
利用爬虫获取猫眼电影热门前100数据 实现方法 1:访问网站,获取页面源码 2:解析页面 ,得到想要的数据 3:循环爬取多个页面 4:把数据写入本地文件 ''' 需求:爬取猫眼电影前100的电影信息 ...
- 在线网页代理api 获取免费的代理地址
在线网页代理api,获取免费的代理地址,不间断更新. 接口名称:在线网页代理api 接口平台:开源接口 接口地址:http://japi.juheapi.com/japi/fatch 支持格式:jso ...
最新文章
- DeFi 史上最大盗窃案:一个漏洞盗走价值 6 亿美元资产?现已归还近一半
- 如何用item pipeline(管道)清洗数据
- wine应用运行后字体都是问号
- 架构设计--仅是软件开发之第二大影响力?!
- python自动化工具哪个好用_微软最强 Python 自动化工具开源了!不用写一行代码!...
- 真相了!AI 程序员:我们根本没有 80w 年薪好么?
- 软考——(1)J2SE
- OPC DA通讯 KEP6.4 DCOM 配置脚本
- 三菱fx3u中文手册_3个月高效掌握三菱PLC!四个阶段经验大总结~
- 计算机组成原理白中英第五版之总线系统
- Protel99SE WIN10系统下无法添加封装库的解决方法
- 商业研究(17):以小见大,看互联网经济(4个股权众筹平台,4个领域,10个项目,8个图)
- 关于H.264编码原理以及IPB帧
- flink流处理示例开发
- UDS诊断系列介绍08-19服务
- 了解模型预测控制4--自适应,增益调度和非线性MPC
- Alexnet详解以及tesnsorflow实现alexnet;什么是alexnet alexnet能做什么;alexnet教程
- 赠书福利|一本书是写给美国人看的书,告诉我们,美国科技为什么领先?
- 【接口测试】Jenkins+ant+jmeter接口自动化测试及邮件发送
- 分区重分配(二十二)