首页 > 其他分享 >28构建IP池与从csv中提取ip

28构建IP池与从csv中提取ip

时间:2022-12-19 02:22:06浏览次数:40  
标签:ip list text proxy IP print csv 28

1.技巧

打印的字标红

# \033[31m可用\033[0m
例如:
a = 1
print(a,'\033[31m变红\033[0m')

2.IP池 与 IP提取

ip池

# coding=gbk
# -*- coding:uft-8 -*-
# @Time: 2022/12/18
# @Author: 十架bgm
# @FileName: IP池12-18
import requests                         #导入模块
from lxml import etree
from faker import Factory
Fact =Factory.create()
ua = Fact.user_agent()
def request_header():
    headers = {
        'User-Agent': ua
    }
    return headers

'''
创建两个列表用来存放代理ip
'''
all_ip_list = []  #用于存放从网站上抓取到的ip
usable_ip_list = [] #用于存放通过检测ip后是否可以使用

#发送请求,获得响应
def send_request():
    #爬取7页,可自行修改
    for i in range(1,8):
        print(f'正在抓取第{i}页……')
        response = requests.get(url=f'http://www.ip3366.net/free/?page={i}', headers=request_header())
        # text = response.text.encode('ISO-8859-1')
        text = response.text
        # print(text.decode('gbk'))
        #使用xpath解析,提取出数据ip,端口
        html = etree.HTML(text)
        tr_list = html.xpath('/html/body/div[2]/div/div[2]/table/tbody/tr')
        for td in tr_list:
            ip_ = td.xpath('./td[1]/text()')[0] #ip
            port_ = td.xpath('./td[2]/text()')[0]  #端口
            proxy = ip_ + ':' + port_   #115.218.5.5:9000
            all_ip_list.append(proxy)
            test_ip(proxy)      #开始检测获取到的ip是否可以使用
    print('抓取完成!')
    print(f'抓取到的ip个数为:{len(all_ip_list)}')
    print(f'可以使用的ip个数为:{len(usable_ip_list)}')
    print('分别有:\n', usable_ip_list)
#检测ip是否可以使用
def test_ip(proxy):
    #构建代理ip
    proxies = {
        "http": "http://" + proxy,
        "https": "http://" + proxy,
        # "http": proxy,
        # "https": proxy,
    }
    try:
        response = requests.get(url='https://www.baidu.com/',headers=request_header(),proxies=proxies,timeout=1) #设置timeout,使响应等待1s
        response.close()
        if response.status_code == 200:
            usable_ip_list.append(proxy)
            print(proxy, '\033[31m可用\033[0m')
        else:
            print(proxy, '不可用')
    except:
        print(proxy,'请求异常')

if __name__ == '__main__':
    send_request()
    for usable_ip in usable_ip_list:
        with open('usableIP.csv', 'a', encoding='utf-8') as f:
            f.write(usable_ip + '\n')

ip提取(从csv文件提取)

# coding=gbk
# -*- coding:uft-8 -*-
# @Time: 2022/12/19
# @Author: 十架bgm
# @FileName: 从csv文件提取ip
import random
import pandas as pd
import requests
from faker import Factory
Fact =Factory.create()
ua = Fact.user_agent()
# data = pd.read_csv('./爬虫练习/自动获取海量ip/usableIP.csv')
data = pd.read_csv('./usableIP.csv')   # 读取csv文件
# print(data)
ips = data['IP']     # 只提取'IP'这列的数据
ip_list = []
for i in ips:
    ip_list.append(i)
print(f'ip池:{ip_list}')
print(f'ip数量为:{len(ip_list)}')
ip = ip_list[random.randint(0,len(ip_list)-1)]  # 随机提取
print(f'随机抽取的id为:{ip}')

headers = {
        'User-Agent': ua
    }
proxies = {
        "http": ip,
        "https": ip,
        # "http": proxy,
        # "https": proxy,
    }

response = requests.get(url='https://api.ipify.org/?format=json',headers=headers,proxies=proxies,timeout=1)
print(f'访问网站“https://api.ipify.org/?format=json”的ip是:{response.text}')

标签:ip,list,text,proxy,IP,print,csv,28
From: https://www.cnblogs.com/socoo-/p/16991369.html

相关文章

  • Jenkins实践指南-07-pipeline 内置基础步骤
    3.3pipeline内置基础步骤3.3.1pipeline中使用脚本  [作者:Surpassme]在实际项目,可能在某些步骤需要使用少量的脚本,这个时候可以使用script来实现,示例如下所示:pipe......
  • 网络私有IP地址
    A类的:10.0.0.0-10.255.255.255B类的:172.16.0.0-172.31.255.255C类的:192.168.0.0~192.168.255.255以上这些地址都是专用IP地址,不用于公网(互联网)只能用于内网也就是本地局......
  • abc--282--E
    题意主要就是每次操作删去一个数,知道最后只剩下一个数了思路竟然是最大生成树每次删去一个点,也就相当于将两个点进行合并了,其实也不用管是将那个点删去了反正是合并了......
  • 腾讯QQ v9.7.0.28910 绿色优化版
    修改历史:2022.12.14:自改官方 9.7.0.28910最新正式版本2022.08.30:自改官方9.6.6.28796 最新正式版本2022.06.24:自改官方9.6.6.28796 最新正式版本2022.05.23:重新修正......
  • Pipeline工作流
    一、概述pipeline实现了对特征处理与机器学习的封装流程化管理,期间处理的参数可以很方便的在测试集和未来数据上反复使用。Pipeline都是执行各学习器中对应的方法,如果......
  • AtCoder Beginner Contest 282
    《MakeBipartite2》思维,二分图  这个简单图可以有两种情况:1.全部点都通过边连起来,即连通分量只有一个,其自己2.还有有些点没有全部连起来,即有多个连通分......
  • 这个全新的 “万能文库”下载器,竟然可以下载VIP文档!
    其实,不管是学生党,还是工作党,应该或多或少,都有过在“百度”、“道客”、“豆丁”等文库上面,下载某些材料或模板。当然,以前群里面总有一些人会问:“谁能够帮我在百度文库上面,......
  • Eclipse常用快捷键
    参考okeyl.com1几个最重要的快捷键代码助手:Ctrl+Space(简体中文操作系统是Alt+/)快速修正:Ctrl+1单词补全:Alt+/打开外部Java文档:Shift+F2显示搜索对话框:Ctrl+H快速Outli......
  • 实用HTML,CSS和JavaScript速查表--转载
    速查表是帮你记住东西的有效工具。Web设计师和开发者经常使用的快捷键简表会使他们在网上的工作效率大大提高。事实上,速查表就是来帮助我们把日常中最常用到的信息聚集起来......
  • 【LeeCode】283. 移动零
    【题目描述】给定一个数组 ​​nums​​​,编写一个函数将所有 ​​0​​ 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进......