zoukankan      html  css  js  c++  java
  • 自建免费的代理ip池

    00x01--- 前言

    因为爬虫被禁ip这样的反扒真的很凶,但自从建了一个代理ip池以后,反反扒就可以跟的上节奏。当然你也可以上网上各种代理平台自己付费。这些平台当然很方便提供api调用,还不用自己验证。但你不想付费的话,可以看看下面这个国外的开源项目,我是从某网站的评论信息里找到的,下面操作均是基于该网站:https://raw.githubusercontent.com/fate0/proxylist/master/proxy.list

    00x02--- 获取代理的json信息

    打开网站,不过需要墙,这是一个开源的项目

    00x03 --- 分析

    很明显每一行是一个json数据,但整个页面你拿到的也不过是字符串而已,每一行末都换行,也就是说每一行末都有" ",那么思路很清晰,用requests获得整个页面的text(字符串),然后用split(' ') 将每一行分割之后组成的列表,便利这个列表用json.loads()方法,将每一行的字符串转换为json对象,最后取值。

    00x04 --- 上代码

     1 #!/usr/bin/env python3
     2 # coding:utf-8
     3 #lanxing
     4 
     5 
     6 import json
     7 import telnetlib
     8 import requests
     9 import random
    10 
    11 proxy_url = 'https://raw.githubusercontent.com/fate0/proxylist/master/proxy.list'
    12 # proxyList = []
    13 
    14 #定义函数,验证代理ip是否有效
    15 def verify(ip,port,type):
    16     proxies = {}
    17     try:
    18         telnet = telnetlib.Telnet(ip,port=port,timeout=3)  #用这个ip请访问,3s自动断开,返回tiemout
    19     except:
    20         print('unconnected')
    21     else:
    22         #print('connected successfully')
    23         # proxyList.append((ip + ':' + str(port),type))
    24         proxies['type'] = type
    25         proxies['host'] = ip
    26         proxies['port'] = port
    27         proxiesJson = json.dumps(proxies)
    28         #保存到本地的proxies_ip.json文件
    29         with open('proxies_ip.json','a+') as f:
    30             f.write(proxiesJson + '
    ')
    31         print("已写入:%s" % proxies)
    32 
    33 #定义函数,带着url地址去获取数据
    34 def getProxy(proxy_url):
    35     response = requests.get(proxy_url)
    36     #print(type(response))
    37     # 用split('
    ') 将每一行分割之后组成的列表,消除换行影响
    38     proxies_list = response.text.split('
    ')
    39     for proxy_str in proxies_list:
    40         # 用json.loads()方法,将每一行的字符串转换为json对象,最后取值
    41         proxy_json = json.loads(proxy_str)
    42         host = proxy_json['host']
    43         port = proxy_json['port']
    44         type = proxy_json['type']
    45         verify(host,port,type)
    46 
    47 
    48 #主函数,入口
    49 if __name__ == '__main__':
    50     getProxy(proxy_url)

    00x05 --- 效果图

    参考文章:https://blog.csdn.net/qq_42776455/article/details/83047883

  • 相关阅读:
    C#中datagridview单元格值改变实现模糊查找
    C#中建立treeView
    L2008 最长对称子串
    第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(昆明)
    GPLT团体程序设计天梯赛练习集 L1041~L1050
    GPLT团体程序设计天梯赛练习集 L1051~L1060
    GPLT团体程序设计天梯赛练习集 L1061~L1072
    第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(昆明)(热身赛)
    L2007 家庭房产 并查集
    利用反射把查询到的Table、Reader转换成List、Model
  • 原文地址:https://www.cnblogs.com/lanyincao/p/12004344.html
Copyright © 2011-2022 走看看