日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python ip代理池_python实现ip代理池功能示例

發布時間:2025/4/5 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python ip代理池_python实现ip代理池功能示例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文實例講述了python實現ip代理池功能。分享給大家供大家參考,具體如下:

爬取的代理源為西刺代理。

用xpath解析頁面

用telnet來驗證ip是否可用

把有效的ip寫入到本地txt中。當然也可以寫入到redis、mongodb中,也可以設置檢測程序當代理池中的ip數不夠(如:小于20個)時,啟動該腳本來重新獲取ip,本腳本的代碼也要做相應的改變。

# !/usr/bin/env python

# -*- coding: utf-8 -*-

# @Version : 1.0

# @Time : 2018/10/23 上午10:40

# @Author : Yeoman

# @Description :

import urllib.request

import lxml.etree

import telnetlib

import os

headers = {

'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36'

}

def get_proxy(page_num):

# 獲取頁面

req = urllib.request.Request('http://www.xicidaili.com/nn/{}'.format(page_num), headers=headers) # 構造request請求

response = urllib.request.urlopen(req) # 發送請求

html = response.read()

html = html.decode('utf-8')

# print(html)

# 解析頁面

proxy_list = []

selector = lxml.etree.HTML(html)

rows = selector.xpath('//*[@id="ip_list"]//tr')

rows_total = len(rows)

row_xpath_head = '//*[@id="ip_list"]//tr['

row_ip_xpath_tail = ']/td[2]/text()'

row_port_xpath_tail = ']/td[3]/text()'

for i in range(1, rows_total):

ip_xpath = row_xpath_head + str(i+1) + row_ip_xpath_tail

port_xpath = row_xpath_head + str(i+1) + row_port_xpath_tail

ip = selector.xpath(ip_xpath)[0]

port = selector.xpath(port_xpath)[0]

ip_port = ip + ':' + port

proxy_list.append(ip_port)

return proxy_list

# 檢測代理ip是否可用

def test_proxy_ip_port(proxy_ip_port):

print('當前代理ip:{}'.format(proxy_ip_port))

ip_port = proxy_ip_port.split(':')

ip = ip_port[0]

port = ip_port[1]

# 用telnet來驗證ip是否可用

try:

telnetlib.Telnet(ip, port, timeout=10)

except:

return False

else:

return True

# 把有效的ip寫入本地

def write_ip(proxy_ip):

with open('./ip.txt', 'a') as f:

f.write(proxy_ip + '\n')

# 刪除文件

def del_file():

file_path = './ip.txt'

if os.path.exists(file_path):

os.remove(file_path)

def run():

del_file()

proxy_ip_port_list = []

for i in range(1, 6): # 前5頁

proxy_ip_port_list += get_proxy(i)

for i in range(100): # 一頁有100條

proxy_ip_port = proxy_ip_port_list[i]

is_valid = test_proxy_ip_port(proxy_ip_port)

print(is_valid)

if is_valid:

# 寫入ip到本地

write_ip(proxy_ip_port)

if __name__ == '__main__':

run()

希望本文所述對大家Python程序設計有所幫助。

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的python ip代理池_python实现ip代理池功能示例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。