一、安裝必要插件
測試環境:Windows 10 + Python 3.7.0
(1)安裝Selenium
pip install selenium
(2)安裝Requests
pip install requests
(3)Chrome WebDriver下載
每個版本支持的 Chrome版本是不一樣的,必須要對應的版本才能驅動瀏覽器。
官方網站被牆,可以下載全版本的:http://npm.taobao.org/mirrors/chromedriver
比如我的Chrome瀏覽器和Webdriver版本對應都用V75的:


(4)Chrome WebDriver安裝
1. Windows 安裝方法:
下載壓縮包解壓,chromedriver.exe 和python.exe 都放到python根目錄下即可。
2. Linux 安裝方法:
把解壓的文件放到 /usr/bin 目錄下,並且修改好權限。
二、代碼模板
目標:使用代碼控制瀏覽器訪問指定的鏈接,並且每次訪問使用不同的代理。
代理:使用的是大象代理的api接口提取代理IP。
這段代碼穩定性還不錯,超時等錯誤就會重啟腳本繼續獲取新的代理IP,保證腳本能夠長時間運行。
import random import requests import time from selenium import webdriver import sys import os # 隨機獲取瀏覽器標識 def get_UA(): UA_list = [ "Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19", "Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30", "Mozilla/5.0 (Linux; U; Android 2.2; en-gb; GT-P1000 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1", "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0", "Mozilla/5.0 (Android; Mobile; rv:14.0) Gecko/14.0 Firefox/14.0", "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36" ] randnum = random.randint(0, len(UA_list)-1) h_list = UA_list[randnum] return h_list # 獲取代理IP def get_ip(): # 這里填寫大象代理api地址,num參數必須為1,每次只請求一個IP地址 url = 'http://www.baidu.com' response = requests.get(url) response.close() ip = response.text print(ip) return ip if __name__ == '__main__': url = "https://www.hao123.com/" # 無限循環,每次都要打開一個瀏覽器窗口,不是標簽 while 1: # 調用函數獲取瀏覽器標識, 字符串 headers = get_UA() # 調用函數獲取IP代理地址,這里獲取是字符串,而不是像前兩個教程獲得的是數組 proxy = get_ip() # 使用chrome自定義 chrome_options = webdriver.ChromeOptions() # 設置代理 chrome_options.add_argument('--proxy-server=http://'+proxy) # 設置UA chrome_options.add_argument('--user-agent="'+headers+'"') # 使用設置初始化webdriver driver = webdriver.Chrome(chrome_options=chrome_options) try: # 訪問超時30秒 driver.set_page_load_timeout(30) # 訪問網頁 driver.get(url) # 退出當前瀏覽器 driver.close() # 延遲1~3秒繼續 time_delay = random.randint(1, 3) while time_delay > 0: print(str(time_delay) + " seconds left!!") time.sleep(1) time_delay = time_delay - 1 pass except: print("timeout") # 退出瀏覽器 driver.quit() time.sleep(1) # 重啟腳本, 之所以選擇重啟腳本是因為,長時間運行該腳本會出現一些莫名其妙的問題,不如重啟解決 python = sys.executable os.execl(python, python, *sys.argv) finally: pass
