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

  • 相关阅读:
    CodeForces 706C Hard problem
    CodeForces 706A Beru-taxi
    CodeForces 706B Interesting drink
    CodeForces 706E Working routine
    CodeForces 706D Vasiliy's Multiset
    CodeForces 703B Mishka and trip
    CodeForces 703C Chris and Road
    POJ 1835 宇航员
    HDU 4907 Task schedule
    HDU 4911 Inversion
  • 原文地址:https://www.cnblogs.com/lanyincao/p/12004344.html
Copyright © 2011-2022 走看看