
上篇是用[mlab](https://mlab.com/)提供的免費`MongoDB`數據庫與Python配合,這篇是進階使用。建立維護代理池。
爬蟲思路:
### 一、獲取代理,驗證后導入數據庫(獲取)
- 1. 使用SSR代理Python,獲取 socks-proxy.net 的html,解析。
使用`ProxiesCol.insert_one()`進行**添加**操作
```
LocalProxy = {'https': 'https://127.0.0.1:1080'}
Resp = requests.get(ProxyUrl,proxies = LocalProxy)
Soup = BeautifulSoup(Resp.text, 'lxml')
IpTable = Soup.select('#proxylisttable > tbody > tr')
IpList = [re.findall('<td>(.*?)</td>',str(IpRow)) for IpRow in IpTable]
ProxiesList = [{'https':'%s://%s:%s'%(Ip[3],Ip[0],Ip[1])} for Ip in IpList]
```
- 2. 驗證代理
我用的是Bilibili api驗證代理,并添加地區到數據庫。
`https://api.live.bilibili.com/ip_service/v1/ip_service/get_ip_addr`

`SocksProxies.py`
```
IpJson = json.loads(Response.text)
country = IpJson['data']['country']
province = IpJson['data']['province']
city = IpJson['data']['city']
Proxies['Location'] = country + province + city
ProxiesCol.insert_one(Proxies)
```
導入到`MongoDB`的數據格式為:
```json
{
"_id": {
"$oid": "5ea930b5b1418a139229b209"
},
"https": "Socks4://209.13.96.172:39921",
"Location": "阿根廷阿根廷",
"AddTime": "2018年04月29日 15時45分57秒",
"UpdateDate": "2018年04月29日 15時45分57秒"
}
```
### 二、從數據庫獲取代理并驗證是否失效(維護)
- 1. 刪除重復代理
```
myclient = pymongo.MongoClient('mongodb://fuwenyue:pass4Top@ds061076.mlab.com:61076/socksproxies',retryWrites='false')
mydb = myclient['socksproxies']
ProxiesCol = mydb['unchecked']
ProxiesList = ProxiesCol.find({},{ "_id": 0, "https": 1}).sort('update',-1)
ProxiesList = [Proxies for Proxies in ProxiesList]
```
- 2. 定期校驗代理。
使用 `ProxiesCol.delete_one()`、`ProxiesCol.update_one()`進行刪除與更新操作,定期檢查可維護代理池。
### 三、`MongoDB`的查詢。
`ProxiesCol.find({},{ "_id": 0, "https": 1}).sort('update',-1)`
完整代碼:https://github.com/yoval/GetSocksProxies
- 【數據可視化】微博熱搜排行榜爬蟲及數據可視化
- 【數據可視化】bilibili直播排行榜爬蟲及數據可視化
- 【互聯網】隱藏在嗶哩嗶哩網頁中的彩蛋
- 【爬蟲】懶人聽書免費部分及已付費部分下載
- 【互聯網】搭建各種網盤
- 【互聯網】對象儲存客戶端用作直鏈網盤
- 【互聯網】折騰個手嶌葵的音樂網站
- 【互聯網】折騰個音樂網站(進階版)
- 【軟件】Mp3tag的使用與配置
- 【數據庫】MongoDB與python的配合使用
- 【爬蟲】爬取Socks代理,保存至MongoDB,維護代理池
- 【數據可視化】MongoDB代理池進行數據可視化
- 【軟件】Sublime Text 3 的配置與使用
- 【互聯網】Apache的. htaccess解決301批量重定向
- 【互聯網】AmWiki的安裝與使用
- 【互聯網】在新浪云(Sae)部署Docker
- 【Termux】Jupyter notebook的安裝與使用
- 【Termux】運行自動簽到autosignmachine