# IPProxyPool
IPProxyPool代理池项目,提供代理ip。支持py2和py3两个版本。
### 我的新书[《Python爬虫开发与项目实战》](https://item.jd.com/12206762.html)出版了,喜欢的话可以看一下[样章](http://pan.baidu.com/s/1hrWEOYg)
<br/>
详细使用方式,请看我的博客:
http://www.cnblogs.com/qiyeboy/p/5693128.html
<br/>
最近正在为IPProxyPool添加二级代理,方便调度。大家可以关注我的公众号,更新我会及时通知。
<br/>
#### 我的微信公众号:
![](qiye2.jpg)
<br/>
希望大家提供更多的代理网站,现在爬取的好用的代理ip还是太少。
<br/>
同时感谢[super1-chen](https://github.com/super1-chen),[fancoo](https://github.com/fancoo),[Leibnizhu](https://github.com/Leibnizhu)对项目的贡献。
<br/>
## 项目依赖
#### Ubuntu,debian
1.安装sqlite数据库(一般系统内置):
apt-get install sqlite3
<br/>
2.安装requests,chardet,web.py,gevent psutil:
pip install requests chardet web.py sqlalchemy gevent psutil
<br/>
3.安装lxml:
apt-get install python-lxml
<br/>
注意:
* python3下的是pip3
* 有时候使用的gevent版本过低会出现自动退出情况,请使用pip install gevent --upgrade更新)
* 在python3中安装web.py,不能使用pip,直接下载py3版本的[源码](https://codeload.github.com/webpy/webpy/zip/py3)进行安装
#### Windows
1.下载[sqlite](http://www.sqlite.org/download.html),路径添加到环境变量
<br/>
2.安装requests,chardet,web.py,gevent:
pip install requests chardet web.py sqlalchemy gevent
<br/>
3.安装lxml:
pip install lxml或者下载[lxml windows版](https://pypi.python.org/pypi/lxml/)
<br/>
注意:
* python3下的是pip3
* 有时候使用的gevent版本过低会出现自动退出情况,请使用pip install gevent --upgrade更新)
* 在python3中安装web.py,不能使用pip,直接下载py3版本的[源码](https://codeload.github.com/webpy/webpy/zip/py3)进行安装
#### 扩展说明
本项目默认数据库是sqlite,但是采用sqlalchemy的ORM模型,通过预留接口可以拓展使用MySQL,MongoDB等数据库。
配置方法:
<br/>
1.MySQL配置
```
第一步:首先安装MySQL数据库并启动
第二步:安装MySQLdb或者pymysql(推荐)
第三步:在config.py文件中配置DB_CONFIG。如果安装的是MySQLdb模块,配置如下:
DB_CONFIG={
'DB_CONNECT_TYPE':'sqlalchemy',
'DB_CONNECT_STRING':'mysql+mysqldb://root:root@localhost/proxy?charset=utf8'
}
如果安装的是pymysql模块,配置如下:
DB_CONFIG={
'DB_CONNECT_TYPE':'sqlalchemy',
'DB_CONNECT_STRING':'mysql+pymysql://root:root@localhost/proxy?charset=utf8'
}
```
sqlalchemy下的DB_CONNECT_STRING参考[支持数据库](http://docs.sqlalchemy.org/en/latest/core/engines.html#supported-databases),理论上使用这种配置方式不只是适配MySQL,sqlalchemy支持的数据库都可以,但是仅仅测试过MySQL。
<br/>
2.MongoDB配置
```
第一步:首先安装MongoDB数据库并启动
第二步:安装pymongo模块
第三步:在config.py文件中配置DB_CONFIG。配置类似如下:
DB_CONFIG={
'DB_CONNECT_TYPE':'pymongo',
'DB_CONNECT_STRING':'mongodb://localhost:27017/'
}
```
由于sqlalchemy并不支持MongoDB,因此额外添加了pymongo模式,DB_CONNECT_STRING参考pymongo的连接字符串。
##### 注意
如果大家想拓展其他数据库,可以直接继承db下ISqlHelper类,实现其中的方法,具体实现参考我的代码,然后在DataStore中导入类即可。
```
try:
if DB_CONFIG['DB_CONNECT_TYPE'] == 'pymongo':
from db.MongoHelper import MongoHelper as SqlHelper
else:
from db.SqlHelper import SqlHelper as SqlHelper
sqlhelper = SqlHelper()
sqlhelper.init_db()
except Exception,e:
raise Con_DB_Fail
```
有感兴趣的朋友,可以将Redis的实现方式添加进来。
## 如何使用
将项目目录clone到当前文件夹
$ git clone
切换工程目录
```
$ cd IPProxyPool
```
运行脚本
```
python IPProxy.py
```
成功运行后,打印信息
```
IPProxyPool----->>>>>>>>beginning
http://0.0.0.0:8000/
IPProxyPool----->>>>>>>>db exists ip:0
IPProxyPool----->>>>>>>>now ip num < MINNUM,start crawling...
IPProxyPool----->>>>>>>>Success ip num :134,Fail ip num:7882
```
## API 使用方法
#### 第一种模式
```
GET /
```
这种模式用于查询代理ip数据,同时加入评分机制,返回数据的顺序是按照评分由高到低,速度由快到慢制定的。
#### 参数
| Name | Type | Description |
| ----| ---- | ---- |
| types | int | 0: 高匿,1:匿名,2 透明 |
| protocol | int | 0: http, 1 https, 2 http/https |
| count | int | 数量 |
| country | str | 取值为 国内, 国外 |
| area | str | 地区 |
#### 例子
##### IPProxys默认端口为8000,端口可以在config.py中配置。
##### 如果是在本机上测试:
1.获取5个ip地址在中国的高匿代理:http://127.0.0.1:8000/?types=0&count=5&country=国内
<br/>
2.响应为JSON格式,按照评分由高到低,响应速度由高到低的顺序,返回数据:
<br/>
```
[["122.226.189.55", 138, 10], ["183.61.236.54", 3128, 10], ["61.132.241.109", 808, 10], ["183.61.236.53", 3128, 10], ["122.227.246.102", 808, 10]]
```
<br/>
以["122.226.189.55", 138, 10]为例,第一个元素是ip,第二个元素是port,第三个元素是分值score。
```
import requests
import json
r = requests.get('http://127.0.0.1:8000/?types=0&count=5&country=国内')
ip_ports = json.loads(r.text)
print ip_ports
ip = ip_ports[0][0]
port = ip_ports[0][1]
proxies={
'http':'http://%s:%s'%(ip,port),
'https':'http://%s:%s'%(ip,port)
}
r = requests.get('http://ip.chinaz.com/',proxies=proxies)
r.encoding='utf-8'
print r.text
```
#### 第二种模式
```
GET /delete
```
这种模式用于方便用户根据自己的需求删除代理ip数据
#### 参数
| Name | Type | Description |
| ----| ---- | ---- |
| ip | str | 类似192.168.1.1 |
| port | int | 类似 80 |
| types | int | 0: 高匿,1:匿名,2 透明 |
| protocol | int | 0: http, 1 https, 2 http/https |
| count | int | 数量 |
| country | str | 取值为 国内, 国外 |
| area | str | 地区 |
大家可以根据指定以上一种或几种方式删除数据。
#### 例子
##### 如果是在本机上测试:
1.删除ip为120.92.3.127的代理:http://127.0.0.1:8000/delete?ip=120.92.3.127
<br/>
2.响应为JSON格式,返回删除的结果为成功,失败或者返回删除的个数,类似如下的效果:
["deleteNum", "ok"]或者["deleteNum", 1]
```
import requests
r = requests.get('http://127.0.0.1:8000/delete?ip=120.92.3.127')
print r.text
```
## config.py参数配置
```
#parserList是网址解析规则表,大家可以将发现的代理网址,将提取规则添加到其中,方便爬虫的爬取。
parserList = [
{
'urls': ['http://www.66ip.cn/%s.html' % n for n in ['index'] + list(range(2, 12))],
'type': 'xpath',
'pattern': ".//*[@id='main']/div/div[1]/table/tr[position()>1]",
'position': {'ip': './td[1]', 'port': './td[2]', 'type': './td[4]', 'protocol': ''}
},
......
{
'urls': ['http://www.cnproxy.com/proxy%s.html' % i for i in range(1, 11)],
'type': 'module',
'moduleName': 'CnproxyPraser',
'pattern': r'<tr><td>(\d+\.\d+\.\d+\.\d+)<SCRIPT type=text/javascript>document.write\(\"\:\"(.+)\)</SCRIPT></td><td>(HTTP|SOCKS4)\s*',
'position': {'ip': 0, 'port': 1, 'type': -1, 'protocol': 2}
}
]
#数据库的配置
DB_CONFIG = {
'DB_CONNECT_TYPE': 'sqlalchemy', # 'pymongo'sqlalchemy;redis
# 'DB_CONNECT_STRING':'mongodb://localhost:27017/'
'DB_CONNECT_STRING': 'sqlite:///' + os.path.dirname(__file__) + '/data/proxy.db'
# DB_CONNECT_STRING : 'mysql+mysqldb://root:root@localhost/proxy?charset=utf8'
# 'DB_CONNECT_TYPE': 'redis', # 'pymon
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
网盘资源搜索引擎网站是指专门用于搜索各类网络存储(网盘)上的资源(如文件、软件、视频、音乐等)的在线搜索引擎平台。这类网站提供用户便捷地搜索和访问网络存储中存放的资源,帮助用户找到他们需要的内容。以下是一些常见的网盘资源搜索引擎网站功能和特点: 1. 综合搜索:支持关键词搜索,用户可以通过输入关键字搜索感兴趣的资源,如电影、音乐、软件等。 2. 多网盘支持:网站通常支持搜索各种知名网盘平台上的资源,如百度云、360云盘、坚果云、微云等。 3. 索引资源:网站通过爬虫技术将网盘上文件内容进行索引,可以更快地找到相关资源。 4. 分类浏览:提供资源的分类浏览功能,方便用户按照类型、格式、大小等条件快速筛选所需资源。 5. 热门资源推荐:根据用户搜索和下载量,推荐热门资源给用户,方便查找热门内容。 6. 资源预览:有些网站支持资源在线预览或播放,让用户可以在不下载的情况下先预览资源内容。 7. 用户评论评分:提供用户评论和评分功能,让用户分享对资源的使用体验和评价。 8. 会员服务:部分网站提供会员服务,如加速下载、无广告等特权服务。 这些网盘资源搜索引擎网站为...
资源推荐
资源详情
资源评论
收起资源包目录
A毕业设计:百度网盘资源搜索引擎网站的设计与实现.zip (220个子文件)
start_share_user.bat 32B
start_content.bat 29B
start_index.bat 27B
start.bat 13B
zoo.cfg 981B
nginx.conf 4KB
qqwry.dat 8.86MB
.editorconfig 197B
.eslintignore 109B
.eslintrc 2KB
.gitignore 1KB
.gitignore 274B
.gitignore 274B
.gitignore 274B
.gitignore 274B
.gitignore 274B
.gitignore 274B
.gitignore 216B
index.html 298B
config.ini 86B
mysql-connector-java-5.1.29.jar 856KB
NetdiskResourceEntityExample.java 38KB
ProxysEntityExample.java 28KB
HotKeywordsEntityExample.java 22KB
FastsosoShareuserUrlEntityExample.java 20KB
FastsosoUrlEntityExample.java 20KB
NetdiskResourceEntity.java 12KB
NetdiskResourceEntityVO.java 12KB
ProxysEntity.java 9KB
SearchController.java 6KB
HotKeywordsEntity.java 5KB
FastsosoShareuserUrlEntity.java 5KB
SearchControllerTest.java 5KB
FastsosoUrlEntity.java 5KB
FastsosoShareuserUrlEntityMapper.java 3KB
NetdiskResourceEntityMapper.java 3KB
FastsosoUrlEntityMapper.java 3KB
ProxysEntityMapper.java 3KB
GlobalExceptionHandler.java 3KB
MybatisConfiguration.java 3KB
MD5Utils.java 2KB
HotKeywordsEntityMapper.java 2KB
SpringUtil.java 2KB
NetdiskResourceServiceImpl.java 2KB
FastsosoUrlServiceImpl.java 2KB
NetdiskResourceController.java 2KB
DateUtil.java 2KB
ApiApplication.java 1KB
SwaggerConfig.java 1KB
UUIDGenerator.java 1KB
FastsosoUrlController.java 1KB
DataSourceConfiguration.java 1KB
HotKeywordsServiceImpl.java 1KB
HotKeywordsController.java 1KB
WechatOpenApiErrorEnum.java 1KB
BaseEntity.java 1KB
WechatOpenApiException.java 1KB
PageUtil.java 919B
StringUtil.java 904B
ApiResponseEntity.java 846B
ControllerApplication.java 664B
BaseJUnitTest.java 611B
StatusEnum.java 605B
GridResult.java 547B
ServiceApplication4UT.java 525B
ServiceApplication.java 405B
HandlerResult.java 381B
TimeTest.java 373B
NetdiskResourceService.java 254B
Constants.java 240B
SearchServiceImpl.java 195B
FastsosoUrlService.java 169B
HotKeywordsService.java 155B
SearchService.java 69B
搜索功能测试10000.jmx 134KB
门户网站测试5000.jmx 111KB
qiye2.jpg 28KB
formatter.js 3KB
menuConfig.js 2KB
configureStore.js 1KB
injectReducer.js 1KB
reducerInjectors.js 1KB
reducers.js 937B
index.js 858B
routerConfig.js 798B
checkStore.js 530B
index.js 333B
index.js 333B
index.js 317B
serverConfig.js 100B
index.js 79B
index.js 79B
index.js 70B
index.js 70B
index.js 70B
index.js 70B
index.js 64B
index.js 64B
index.js 58B
index.js 55B
共 220 条
- 1
- 2
- 3
资源评论
百锦再@新空间代码工作室
- 粉丝: 1w+
- 资源: 806
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 《数字图像处理》课程设计-人脸识别门禁系统
- IBM Db2 数据库介绍.pptx
- BeyondCompare-v3.3.13.zip
- 基于pytorch实现的验证码识别荐源代码+详细说明,针对数字,大小写字母识别准确率能达到97-99%
- 电力系统动态无功优化含分布式电源MATLAB程序IEEE33配电网 1)该程序为基于粒子群算法的含分布式电源配电网动态无功优化程序,期刊lunwen源程序,配有该lunwen (2)该程序为动态无
- 基于labview的定时时钟实设计
- 基于labview的FM调制
- 基于labview的智能大棚温湿度控制系统
- 纯电动汽车Matlab Simulink软件模型,纯电动汽车动力性、经济性仿真模型 1.本模型基于Matlab Simulink搭建,包含:电池、电机、整车纵向动力学、控制策略、驾驶员等模块 2.模
- IBM Cognos Analytics CA Workshop Data.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功