HTTP代理 獲取代理IP首先需要獲取一個可用代理IP和端口,可以從以下網(wǎng)站獲取IP: 西刺:https://www.快代理:https://www./free站大爺:http://ip./dayProxy.html 當然,你也可以從其他網(wǎng)站購買更穩(wěn)定的代理IP。
從上述網(wǎng)站獲取代理IP, 這里我獲取到IP:116.209.59.41,端口:9999 我們從基礎的 Urllib 開始學習,來看一下代理的設置方法: from urllib.error import URLError from urllib.request import ProxyHandler, build_opener def http_proxy(ip, port): proxy = ip + ':' + port proxy_handler = ProxyHandler({ 'http': 'https://' + proxy, 'https': 'https://' + proxy }) opener = build_opener(proxy_handler) return opener if __name__ == '__main__': opener = http_proxy('116.209.59.41', '9999') try: response = opener.open('https:///get') print(response.read().decode('utf-8')) except URLError as e: print(e.reason) 運行結(jié)果如下: { 'args': {}, 'headers': { 'Accept-Encoding': 'identity', 'Connection': 'close', 'Host': '', 'User-Agent': 'Python-urllib/3.6' }, 'origin': '116.209.59.41', 'url': 'https:///get' } 返回結(jié)果是 Json,字段 origin標明了你現(xiàn)在的 IP。正好為代理 IP,不是真實的 IP,這樣我們就成功設置好代理,可以使用opener打開任意網(wǎng)址。
Requests 代理設置代碼如下: import requests if __name__ == '__main__': ip = '116.209.59.41' port = '9999' proxy = ip + ':' + port proxies = { 'http': 'https://' + proxy, 'https': 'https://' + proxy, } try: response = requests.get('https:///get', proxies=proxies) print(response.text) except requests.exceptions.ConnectionError as e: print('Error', e.args) 運行結(jié)果: { 'args': {}, 'headers': { 'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'Connection': 'close', 'Host': '', 'User-Agent': 'python-requests/2.18.1' }, 'origin': '106.185.45.153', 'url': 'https:///get' }
Selenium 同樣可以設置代理。 elenium 設置代理的代碼如下: from selenium import webdriver def get_driver_with_proxy(ip, port): proxy = ip + ':' + port chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--proxy-server=https://' + proxy) browser = webdriver.Chrome(chrome_options=chrome_options)\ return browser if __name__ == '__main__': browser = get_driver_with_proxy('106.185.45.153', '9999') browser.get('https:///get') 這樣我們只需要調(diào)用browser就可以使用代理IP訪問任意網(wǎng)站了。 { 'args': {}, 'headers': { 'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'Connection': 'close', 'Host': '', 'User-Agent': 'python-requests/2.18.1' }, 'origin': '106.185.45.153', 'url': 'https:///get' } 可以看到代理設置成功。
對于 PhantomJS代理設置代碼如下: from selenium import webdriver def get_PhantomJS_driver(ip, port): proxy = ip + ':' + port args = [ f'--proxy={proxy}', '--proxy-type=http' ] browser = webdriver.PhantomJS(service_args=args) return browser if __name__ == '__main__': browser = get_PhantomJS_driver('106.185.45.153', '9999') browser.get('https:///get') print(browser.page_source) 通過使用 args 參數(shù)進行代理IP設置。 運行結(jié)果: { 'args': {}, 'headers': { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-CN,en,*', 'Connection': 'close', 'Host': '', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/538.1 (KHTML, like Gecko) PhantomJS/2.1.0 Safari/538.1' }, 'origin': '106.185.45.153', 'url': 'https:///get' } 運行結(jié)果的 origin 同樣為代理的 IP,設置代理成功。 以上就是簡單的一個Pytho的IP代理設置方法。我們只需要結(jié)合爬蟲,爬取免費代理IP網(wǎng)站上面的IP構(gòu)建自己的IP池,便可以輕松切換IP進行各種爬蟲。 |
|