天天看點

selenium+PhantomJS+IP代理

首先安裝selenium、PhantomJS

  • selenium安裝
    pip install selenium           
  • PhantomJS安裝

    這個需要手動的到

    官網 下載下傳

開始使用

  • 導入需要的包
    import random
    from selenium import webdriver
    from selenium.webdriver.common.proxy import ProxyType
    # 調用鍵盤按鍵操作
    from selenium.webdriver.common.keys import Keys
    # 調用滑鼠操作
    from selenium.webdriver import ActionChains
    # 設定請求頭
    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities           
  • 操作PhantomJS
    desired_cap = DesiredCapabilities.PHANTOMJS.copy()
    # 設定請求頭
    desired_cap['phantomjs.page.settings.User-Agent'] = 'user_agent...'
    # 配置代理IP
    proxy = [
        '--proxy=%s' % "139.199.38.177:8118",  # 設定的代理ip
        '--proxy-type=http',  # 代理類型
        '--ignore-ssl-errors=true',
        ]
    # 啟動PhantomJS
    driver = webdriver.PhantomJS(executable_path="./phantomjs-2.1.1-linux-x86_64/bin/phantomjs",
                                     desired_capabilities=desired_cap,
                                     service_args=proxy)
    # 設定螢幕大小
    driver.set_window_size(800, 600)
    # 請求網頁
    driver.get("http://www.baidu.com/")
    # 根據html元素的id找到搜尋框,并且輸入要搜尋的内容
    driver.find_element_by_id('kw').send_keys("時光不寫部落格")
    # 查到搜尋按鈕,并且點選搜尋
    random.choice([
                # 使用滑鼠點選操作
                driver.find_element_by_id('su').click(),
                # 使用鍵盤回車操作
                driver.find_element_by_id('su').send_keys(Keys.RETURN)
                ])
    # 截屏
    driver.save_screenshot('baidu.png')
    # 使用xpath查到标簽,并且點選
    driver.find_elements_by_xpath("//div[@id=%s]/h3/a" % 2)[0].click()
    # 拿到目前浏覽器的最後一個tab,這是一個清單的形式
    tab = driver.window_handles[-1]
    # 切換到剛剛點選的頁面
    driver.switch_to_window(tab)
    driver.save_screenshot('blog.png')
    # 根據标簽名查到要點選的資料
    title = driver.find_element_by_tag_name("title")
    # 移動滑鼠到title的位置,并且點選
    ActionChains(driver).move_to_element(title).click(title).perform()
    # 重新整理頁面
    driver.refresh()
    # 列印頁面源碼
    driver.page_source
    title = driver.find_elements_by_xpath("//a[@href='/.']")[0]
    # 移動到title下10像素位置,并且雙點選
    ActionChains(driver).move_to_element_with_offset(title, 0, 10).double_click().perform()
    # 退出
    driver.quit()           
  • 具體操作指令
指令 說明

click(on_element=None)

單擊滑鼠左鍵

context_click(on_element=None)

點選滑鼠右鍵

double_click(on_element=None)

輕按兩下滑鼠左鍵

click_and_hold(on_element=None)

點選滑鼠左鍵,不松開

drag_and_drop(source, target)

拖拽到某個元素然後松開

drag_and_drop_by_offset(source, xoffset, yoffset)

拖拽到某個坐标然後松開

key_down(value, element=None)

按下某個鍵盤上的鍵

key_up(value, element=None)

松開某個鍵

move_by_offset(xoffset, yoffset)

滑鼠從目前位置移動到某個坐标

move_to_element(to_element)

滑鼠移動到某個元素

move_to_element_with_offset(to_element, xoffset, yoffset)

移動到距某個元素(左上角坐标)多少距離的位置

perform()

執行鍊中的所有動作

release(on_element=None)

在某個元素位置松開滑鼠左鍵

send_keys(*keys_to_send)

發送某個鍵到目前焦點的元素

send_keys_to_element(element, *keys_to_send)

發送某個鍵到指定元素

本文連結:

時光不寫部落格-selenium+PhantomJS+IP代理

繼續閱讀