# 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
没有合适的资源?快使用搜索试试~ 我知道了~
2019年-毕业设计-百度网盘资源搜索引擎网站的设计与实现.zip
共220个文件
java:53个
py:41个
js:29个
需积分: 5 0 下载量 68 浏览量
2024-04-22
17:08:49
上传
评论
收藏 5.72MB ZIP 举报
温馨提示
2019年-毕业设计-百度网盘资源搜索引擎网站的设计与实现
资源推荐
资源详情
资源评论
收起资源包目录
2019年-毕业设计-百度网盘资源搜索引擎网站的设计与实现.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
FastsosoUrlServiceImpl.java 2KB
NetdiskResourceServiceImpl.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
资源评论
生瓜蛋子
- 粉丝: 3824
- 资源: 5235
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 数电实验三:74LS151逻辑功能测试、74LS153逻辑功能测试、74LS153全加器、三输入多数表决电路
- jsp基于WEB的考务管理系统的设计与实现(源代码+lw).zip
- jsp基于WEB操作系统课程教学网站的设计与实现(源代码+lw).zip
- 数据库课程实践在IDEA上使用java语言采用JDBC技术连接Mysql数据库,实现购物系统.zip
- JSP基于SSH2的网络在线问答系统.zip
- JSP基于Iptables图形管理工具的设计与实现(源代码+lw).zip
- 数电实验二:74LS138功能测试、74LS138构成同相脉冲分配器、CC4511功能测试、CC4511与共阴极数码管组成的译码
- JSP基于Caché的实验室资源管理系统的设计(源代码+lw).zip
- JSP基于BS结构下的邮件系统设计开发(源代码+lw).zip
- 知识蒸馏-基于Pytorch实现的知识蒸馏+自监督学习算法训练-附项目源码+优质项目实战.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功