首先安裝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()
- 具體操作指令
指令 | 說明 |
---|---|
| 單擊滑鼠左鍵 |
| 點選滑鼠右鍵 |
| 輕按兩下滑鼠左鍵 |
| 點選滑鼠左鍵,不松開 |
| 拖拽到某個元素然後松開 |
| 拖拽到某個坐标然後松開 |
| 按下某個鍵盤上的鍵 |
| 松開某個鍵 |
| 滑鼠從目前位置移動到某個坐标 |
| 滑鼠移動到某個元素 |
| 移動到距某個元素(左上角坐标)多少距離的位置 |
| 執行鍊中的所有動作 |
| 在某個元素位置松開滑鼠左鍵 |
| 發送某個鍵到目前焦點的元素 |
| 發送某個鍵到指定元素 |
本文連結:
時光不寫部落格-selenium+PhantomJS+IP代理