selenium設(shè)置proxy、headers的方法(phantomjs、Chrome、Firefox)
本文介紹了selenium設(shè)置proxy、headers的方法,把phantomjs、Chrome、Firefox幾個瀏覽器的設(shè)置方法都總結(jié)一下,分享給大家,也給自己留個筆記
phantomjs
設(shè)置ip
方法1:
service_args = [ '--proxy=%s' % ip_html, # 代理 IP:prot (eg:192.168.0.28:808) '--proxy-type=http', # 代理類型:http/https ‘--load-images=no', # 關(guān)閉圖片加載(可選) '--disk-cache=yes', # 開啟緩存(可選) '--ignore-ssl-errors=true' # 忽略https錯誤(可選) ] driver = webdriver.PhantomJS(service_args=service_args)
方法2:
browser=webdriver.PhantomJS(PATH_PHANTOMJS) # 利用DesiredCapabilities(代理設(shè)置)參數(shù)值,重新打開一個sessionId,我看意思就相當于瀏覽器清空緩存后,加上代理重新訪問一次url proxy=webdriver.Proxy() proxy.proxy_type=ProxyType.MANUAL proxy.http_proxy='1.9.171.51:800' # 將代理設(shè)置添加到webdriver.DesiredCapabilities.PHANTOMJS中 proxy.add_to_capabilities(webdriver.DesiredCapabilities.PHANTOMJS) browser.start_session(webdriver.DesiredCapabilities.PHANTOMJS) browser.get('http://1212.ip138.com/ic.asp') print('1: ',browser.session_id) print('2: ',browser.page_source) print('3: ',browser.get_cookies())
還原為系統(tǒng)代理
# 還原為系統(tǒng)代理 proxy=webdriver.Proxy() proxy.proxy_type=ProxyType.DIRECT proxy.add_to_capabilities(webdriver.DesiredCapabilities.PHANTOMJS) browser.start_session(webdriver.DesiredCapabilities.PHANTOMJS) browser.get('http://1212.ip138.com/ic.asp')
設(shè)置請求頭
方法2
import random,requests,json from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities from selenium.webdriver.common.proxy import ProxyType #隨機獲取一個ip def proxies(): r = requests.get("http://120.26.166.214:9840/JProxy/update/proxy/scoreproxy") rr = json.loads(r.text) hh = rr['ip'] + ":" + "8907" print(hh) return hh ips =proxies() #設(shè)置phantomjs請求頭和代理方法一: #------------------------------------------------------------------------------------- # 設(shè)置代理 service_args = [ '--proxy=%s' % ips, # 代理 IP:prot (eg:192.168.0.28:808) '--ssl-protocol=any', #忽略ssl協(xié)議 '--load - images = no', # 關(guān)閉圖片加載(可選) '--disk-cache=yes', # 開啟緩存(可選) '--ignore-ssl-errors=true' # 忽略https錯誤(可選) ] #設(shè)置請求頭 user_agent = ( "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) " + "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36" ) dcap = dict(DesiredCapabilities.PHANTOMJS) dcap["phantomjs.page.settings.userAgent"] = user_agent driver = webdriver.PhantomJS(executable_path=r"C:\soft\phantomjs-2.1.1-windows\bin\phantomjs.exe", desired_capabilities=dcap,service_args=service_args) driver.get(url='http://www.baidu.com') page=driver.page_source print(page) #設(shè)置phantomjs請求頭和代理方法二: #------------------------------------------------------------------------------------- desired_capabilities = DesiredCapabilities.PHANTOMJS.copy() # 從USER_AGENTS列表中隨機選一個瀏覽器頭,偽裝瀏覽器 desired_capabilities["phantomjs.page.settings.userAgent"] = (random.choice('請求頭池')) # 不載入圖片,爬頁面速度會快很多 desired_capabilities["phantomjs.page.settings.loadImages"] = False # 利用DesiredCapabilities(代理設(shè)置)參數(shù)值,重新打開一個sessionId,我看意思就相當于瀏覽器清空緩存后,加上代理重新訪問一次url proxy = webdriver.Proxy() proxy.proxy_type = ProxyType.MANUAL proxy.http_proxy = random.choice('ip池') proxy.add_to_capabilities(desired_capabilities) phantomjs_driver = r'C:\phantomjs-2.1.1-windows\bin\phantomjs.exe' # 打開帶配置信息的phantomJS瀏覽器 driver = webdriver.PhantomJS(executable_path=phantomjs_driver,desired_capabilities=desired_capabilities) driver.start_session(desired_capabilities) driver.get(url='http://www.baidu.com') page=driver.page_source print(page) # 隱式等待5秒,可以自己調(diào)節(jié) driver.implicitly_wait(5) # 設(shè)置10秒頁面超時返回,類似于requests.get()的timeout選項,driver.get()沒有timeout選項 # 以前遇到過driver.get(url)一直不返回,但也不報錯的問題,這時程序會卡住,設(shè)置超時選項能解決這個問題。 driver.set_page_load_timeout(20) # 設(shè)置10秒腳本超時時間 driver.set_script_timeout(20) #翻頁命令 driver.execute_script('window.scrollTo(0, document.body.scrollHeight)')
firefox
import time from selenium.webdriver.common.proxy import* myProxy = '202.202.90.20:8080' proxy = Proxy({ 'proxyType': ProxyType.MANUAL, 'httpProxy': myProxy, 'ftpProxy': myProxy, 'sslProxy': myProxy, 'noProxy': '' }) profile = webdriver.FirefoxProfile() if proxy: profile = get_firefox_profile_with_proxy_set(profile, proxy) if user_agent: profile.set_preference("general.useragent.override", user_agent) driver=webdriver.Firefox(proxy=proxy,profile=profile) driver.get('https://www.baidu.com') time.sleep(3) driver.quit() firefox無頭模式 from selenium import webdriver # 創(chuàng)建的新實例驅(qū)動 options = webdriver.FirefoxOptions() #火狐無頭模式 options.add_argument('--headless') options.add_argument('--disable-gpu') # options.add_argument('window-size=1200x600') executable_path='./source/geckodriver/geckodriver.exe' driver_path = webdriver.Firefox(firefox_options=options,executable_path=executable_path)
chrome
# !/usr/bin/python # -*- coding: utf-8 -*- from selenium import webdriver # 進入瀏覽器設(shè)置 options = webdriver.ChromeOptions() #谷歌無頭模式 options.add_argument('--headless') options.add_argument('--disable-gpu') # options.add_argument('window-size=1200x600') # 設(shè)置中文 options.add_argument('lang=zh_CN.UTF-8') # 更換頭部 options.add_argument('user-agent="Mozilla/5.0 (iPod; U; CPU iPhone OS 2_1 like Mac OS X; ja-jp) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F137 Safari/525.20"') #設(shè)置代理 if proxy: options.add_argument('proxy-server=' + proxy) if user_agent: options.add_argument('user-agent=' + user_agent) browser = webdriver.Chrome(chrome_options=options) url = "https://httpbin.org/get?show_env=1" browser.get(url) browser.quit()
selenium設(shè)置chrome–cookie
# !/usr/bin/python # -*- coding: utf-8 -*- from selenium import webdriver browser = webdriver.Chrome() url = "https://www.baidu.com/" browser.get(url) # 通過js新打開一個窗口 newwindow='window.open("https://www.baidu.com");' # 刪除原來的cookie browser.delete_all_cookies() # 攜帶cookie打開 browser.add_cookie({'name':'ABC','value':'DEF'}) # 通過js新打開一個窗口 browser.execute_script(newwindow) input("查看效果") browser.quit()
selenium設(shè)置chrome-圖片不加載
from selenium import webdriver options = webdriver.ChromeOptions() prefs = { 'profile.default_content_setting_values': { 'images': 2 } } options.add_experimental_option('prefs', prefs) browser = webdriver.Chrome(chrome_options=options) # browser = webdriver.Chrome() url = "http://image.baidu.com/" browser.get(url) input("是否有圖") browser.quit()
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
在Python下利用OpenCV來旋轉(zhuǎn)圖像的教程
這篇文章主要介紹了在Python下利用OpenCV來旋轉(zhuǎn)圖像的教程,代碼和核心的算法都非常簡單,需要的朋友可以參考下2015-04-04Python中實現(xiàn)最小二乘法思路及實現(xiàn)代碼
這篇文章主要介紹了Python中實現(xiàn)最小二乘法思路及實現(xiàn)代碼,具有一定借鑒價值,需要的朋友可以參考下2018-01-01linux環(huán)境下python中MySQLdb模塊的安裝方法
這篇文章主要給大家介紹了在linux環(huán)境下python中MySQLdb模塊的安裝方法,文中給大家介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-06-06Python 詳解通過Scrapy框架實現(xiàn)爬取百度新冠疫情數(shù)據(jù)流程
Scrapy是用純Python實現(xiàn)一個為了爬取網(wǎng)站數(shù)據(jù)、提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)用框架,用途非常廣泛,框架的力量,用戶只需要定制開發(fā)幾個模塊就可以輕松的實現(xiàn)一個爬蟲,用來抓取網(wǎng)頁內(nèi)容以及各種圖片,非常之方便2021-11-11Python3.7 + Yolo3實現(xiàn)識別語音播報功能
這篇文章主要介紹了Python3.7 + Yolo3識別語音播報功能,開始之前我們先得解析出來Yolo3的代碼,從而獲取到被識別出來的物體標簽,具體詳細過程跟隨小編一起看看吧2021-12-12Python面向?qū)ο笏枷肱c應(yīng)用入門教程【類與對象】
這篇文章主要介紹了Python面向?qū)ο笏枷肱c應(yīng)用,較為詳細的分析了Python面向?qū)ο笏枷肱c原理,并結(jié)合實例形式分析了類與對象相關(guān)定義、用法及操作注意事項,需要的朋友可以參考下2019-04-04