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程序设计有所帮助。
python ip代理池_python实现ip代理池功能示例相关推荐
- python读取json配置文件_Python简单读取json文件功能示例
本文实例讲述了Python简单读取json文件功能.分享给大家供大家参考,具体如下: read_json.json: { "rule":{ "namespace" ...
- python清理微信好友_Python实现清理微信僵尸粉功能示例【基于itchat模块】
本文实例讲述了Python实现清理微信僵尸粉功能.分享给大家供大家参考,具体如下: 原理 通过Pyhton调用itchat模块登录网页版微信,给你所有好友发送特殊符号,对方收不到这个特殊符号,只要有人 ...
- python 邮件服务器地址_python实现的接收邮件功能示例【基于网易POP3服务器】
本文实例讲述了python实现的接收邮件功能.分享给大家供大家参考,具体如下: 一 简介 本代码实现从网易POP3服务器接收邮件 二 代码 import poplib import re import ...
- python扫描端口脚本_Python实现的端口扫描功能示例
本文实例讲述了Python实现的端口扫描功能.分享给大家供大家参考,具体如下: 一 代码 import sys import socket import multiprocessing def por ...
- python编写科学计算器_Python实现的科学计算器功能示例
本文实例讲述了Python实现的科学计算器功能.分享给大家供大家参考,具体如下: import wx import re import math # begin wxGlade: extracode ...
- python标签整理 微信_Python实现清理微信僵尸粉功能示例【基于itchat模块】
本文实例讲述了Python实现清理微信僵尸粉功能.分享给大家供大家参考,具体如下: 原理 通过Pyhton调用itchat模块登录网页版微信,给你所有好友发送特殊符号,对方收不到这个特殊符号,只要有人 ...
- python ip代理池_Python 爬虫IP代理池的实现
很多时候,如果要多线程的爬取网页,或者是单纯的反爬,我们需要通过代理IP来进行访问.下面看看一个基本的实现方法. 代理IP的提取,网上有很多网站都提供这个服务.基本上可靠性和银子是成正比的.国内提供的 ...
- python爬去新浪微博_Python爬虫爬取新浪微博内容示例【基于代理IP】
Python爬虫爬取新浪微博内容示例[基于代理IP] 发布时间:2020-09-07 10:08:14 来源:脚本之家 阅读:120 本文实例讲述了Python爬虫爬取新浪微博内容.分享给大家供大家参 ...
- python 通过ip获取城市_python 根据ip获取地理位置
!/usr/bin/python coding=utf-8 import dpkt import socket import pygeoip import optparse gi = pygeoip. ...
最新文章
- 股市复盘:本周交易数据分析
- 项目进度,你汇报清楚了么?
- ldap配置系列二:jenkins集成ldap
- Java 8:正在运行的CompletableFuture
- linux 系统文件目录颜色及特殊权限对应的颜色
- telnet 无法连接_Telnet 为什么不能以 root 身份登录系统?
- HDU2098 分拆素数和【筛选法】
- arcgis加载天地图_【arcgis地图实战】之天地图在线服务加载
- 架构师必备!英特尔携手Science联袂推出“架构师成长计划”,来自阿里云、AWS、百度、顺丰、平安等头部大厂专家分享实战经验...
- MMC-HVDC仿真模型,pscad柔性直流输电仿真mmc仿真模型,双端mmc模型,MMC为21电平NLM和均压控制
- uni-app 获取手机类型
- 吉林大学计算机研究生成绩计算方法,关于同济大学研究生成绩计算方法的说明...
- 【转】大地测量系统和参考框架
- vscode 插入多个光标,实现同时多行编辑的快捷键
- 浅谈手机系统——iOS
- 【软件项目管理 PMP】-- 100+真题考试题
- Web前端——移动端页面开发
- js jquery新窗口打开的几种方式
- 362 敲击计数器
- 【Google Play】APK 扩展包 ( 2021年09月02日最新处理方案 | 内部测试链接 | 安装 Google Play 中带 扩展文件 的 APK 安装包 | 验证下载的扩展文件 )
热门文章
- 考研数学一2015年真题整理
- 51Nod1916 购物
- linux 内核参数 杨,Linux 内核参数
- 隧道野蛮模式_基于虚拟隧道的IPsec -华三 MSR26 路由器对接Juniper SSG
- mysql索引查询 with_查找mysql中的低效索引
- bim推荐计算机配置,BIM建模推荐电脑配置清单 适合Revit软件的BIM建模电脑主机配置(2)...
- php mac 常用代码,在Mac上使用PHP exec shell(代码签名)重新分配IPA
- java写入文件编码格式为ansi_Java读取、写入文件如何解决乱码问题
- 用RAM存储器构造能够依次读取各存储单元内容的电路
- docker web程序本地化_Docker教程