Selenium使用代理IP&無頭模式訪問網站

發布時間:2018-08-16 17:14:41編輯:Run閱讀(5103)

    Selenium使用代理IP&無頭模式訪問網站

    很多防爬機制會自動檢測ip訪問的頻率,超過設定的次數,就會被封,這個時候就需要使用代理ip來解決這個問題了

    代碼如下:

    #!/usr/bin/env python
    # coding: utf-8
    from selenium import webdriver
    
    
    class Proxy(object):
        def __init__(self):
            self.proxy_ip = 'http://代理ip地址:端口'
            self.browser = self.getbrowser()
            self.getpage(self.browser)
    
        def getbrowser(self):
            options = webdriver.ChromeOptions()
            # 設置代理
            desired_capabilities = webdriver.DesiredCapabilities.INTERNETEXPLORER.copy()
            desired_capabilities['proxy'] = {
                "httpProxy": self.proxy_ip,
                # "ftpProxy": self.proxy_ip,  # 代理ip是否支持這個協議
                # "sslProxy": self.proxy_ip,  # 代理ip是否支持這個協議
                "noProxy": None,
                "proxyType": "MANUAL",
                "class": "org.openqa.selenium.Proxy",
                "autodetect": False
            }
            # 使用無頭模式
            options.add_argument('headless')
            browser = webdriver.Chrome(chrome_options=options,
                                       executable_path=r'D:\chromedriver_2.41\chromedriver.exe',
                                       desired_capabilities=desired_capabilities)
            return browser
    
        def getpage(self, browser):
            # 打開目标網站
            browser.get("https://www.baidu.com")
            # 對整個頁面進行截圖
            browser.save_screenshot('百度.png')
            # 打印網站的title信息
            print(browser.title)
    
            # 檢測代理ip是否生效
            browser.get("http://httpbin.org/ip")
            # 獲取當前所有窗口集合(list類型) --- 因為打開多個窗口
            handles = browser.window_handles
            # 切換到最新的窗口
            browser.switch_to_window(handles[-1])
            # 打印新窗口網頁的内容
            print(browser.page_source)
    
    
    if __name__ == '__main__':
        Proxy()


    運行程序,顯示打印的是代理ip地址,則表示使用代理成功

    blob.png


    還會自動截圖

    blob.png

關鍵字