591821661 发表于 2021-3-26 20:08:09

用代理访问网站(使用urllib/requests)【重要更新】_PythonWidget[2]

本帖最后由 591821661 于 2021-4-27 21:48 编辑

遵循开源精神 把自己写的小模块分享到论坛 同时希望有大佬能够给出requests的代理实例~{:10_254:}

# -*- coding: utf-8 -*-
"""
Created on Tue Apr 27 19:32:49 2021

@author: Sharpstar_kylin
"""
import urllib.request
import json
import sys
import requests
def urllib_useproxy(proxy=''):
    if proxy:
      proxy_support = urllib.request.ProxyHandler({
                'http': proxy,
                'https' : proxy,
                })
    else:
      proxy_support = urllib.request.ProxyHandler({
                })
   
    opener = urllib.request.build_opener(proxy_support)
    opener.addheaders = [('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36'),
                         ]
    urllib.request.install_opener(opener)
      
def urllib_get_ip(proxy):
    # Get IP Address
    try:
      urllib_useproxy(proxy)# 正常
      ip_api_url = 'http://ip-api.com/json/?fields=61439'
      ip_result = urllib.request.urlopen(ip_api_url)
      proxy_text = ip_result.read().decode('utf-8')
      s_get_dict = json.loads(proxy_text)
      print('urllib\'s response: %s' % ip_result.code)
      print('----------------------IP Information Begin--------------------------')
      for key in s_get_dict:
            print('%s : %s' % (key, s_get_dict))
      print('----------------------IP Information End--------------------------\n')
      
    except:
      print('url_get error')
      print(sys.exc_info(), sys.exc_info())
      
def requests_get_ip(proxy):
    # Get IP Address
    try:
      proxies = {
          "http": proxy,
          "https": proxy,
      }
      res = requests.get(ip_api_url, proxies=proxies)
      proxy_text = res.content.decode('utf-8')
      s_get_dict = json.loads(proxy_text)
      print('Requests\'s response : %s' % res.status_code)
      print('----------------------IP Information Begin--------------------------')
      for key in s_get_dict:
            print('%s : %s' % (key, s_get_dict))
      print('----------------------IP Information End--------------------------\n')
      
    except:
      print('url_get error')
      print(sys.exc_info(), sys.exc_info())

if __name__ == '__main__':# 如果运行该文件,而不是作为库函数导入 则运行下列代码
   
    ip_api_url = 'http://ip-api.com/json/?fields=61439'   
#    proxy = '127.0.0.1:1080' #使用代理
    proxy = '' #不使用代理
    urllib_get_ip(proxy)
    requests_get_ip(proxy)



h4801681 发表于 2021-4-1 07:27:22

老规矩,先赞再看。学习Python

oleg 发表于 2021-4-1 09:11:01

学习学习

zkp北冥鱼 发表于 2021-4-4 18:27:12

学习

hyoutn 发表于 2021-4-20 16:06:30

前来学习经验

lv9999 发表于 2021-4-27 10:10:56

先学看看
页: [1]
查看完整版本: 用代理访问网站(使用urllib/requests)【重要更新】_PythonWidget[2]