1. 程式人生 > >PythonScript_002_設定代理進行爬取

PythonScript_002_設定代理進行爬取

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import urllib.request
import os # os是電腦環境、sys是Python環境
'''
構建代理-進行請求
特點:免費的不穩定
Python 3.7.0
'''
# 代理開關,表示是否用代理
proxyswitch = True

# 獲取系統環境變數的授權代理的賬戶和密碼,作用:可以防止資訊洩露
# proxyuser = os.environ.get("proxyuser") # 這裡沒有設定
# proxyuser = os.environ.get("proxypasswd") # 這裡沒有設定

# 構建一個Handler處理器物件,引數是一個字典型別,包括代理型別和代理伺服器IP + PROT
httporoxy_handler = urllib.request.ProxyHandler({"http" : "101.251.216.103:80"}) # 免費的
# httporoxy_handler = urllib.request.ProxyHandler({"http": "mr_mao_hacker:
[email protected]
:16816"}) # 收費的 # 構建一個沒有代理的處理器物件 nullproxy_handler = urllib.request.ProxyHandler({}) # 構建自定義的opener # 呼叫build_opener()方法構建一個自定義的opener物件,引數是構建的處理器物件 if proxyswitch: opener = urllib.request.build_opener(httporoxy_handler) else: opener = urllib.request.build_opener(nullproxy_handler) # 構建了一個全域性的opener,之後所有的請求都可以用urlopen()方式去傳送,也附帶Handler的功能 # 注:全域性代理適合設定一個代理之後不再更換代理,而需要一直更換代理的就不能設定全域性代理 urllib.request.install_opener(opener) # 構建請求 request = urllib.request.Request("http://www.baidu.com/") # 獲取響應 reponse = urllib.request.urlopen(request) # 列印內容 print(reponse.read().decode("utf-8"))