1. 程式人生 > >Python selenium外掛使用 可刷瀏覽量

Python selenium外掛使用 可刷瀏覽量

常見selenium 程式碼及含義:

Selenium是一個Web的自動化測試工具,最初是為網站自動化測試而開發的,型別像我們玩遊戲用的按鍵精靈,可以按指定的命令自動操作,不同是Selenium 可以直接執行在瀏覽器上,它支援所有主流的瀏覽器(包括PhantomJS這些無介面的瀏覽器)。 Selenium 可以根據我們的指令,讓瀏覽器自動載入頁面,獲取需要的資料,甚至頁面截圖,或者判斷網站上某些動作是否發生。

Selenium 自己不帶瀏覽器,不支援瀏覽器的功能,它需要與第三方瀏覽器結合在一起才能使用。但是我們有時候需要讓它內嵌在程式碼中執行,所以我們可以用一個叫 PhantomJS 的工具代替真實的瀏覽器。

可以從 PyPI 網站下載 Selenium庫https://pypi.python.org/simple/selenium , 也可以用第三方管理器 pip用命令安裝:pip install selenium

Selenium也分為有介面瀏覽器和無介面瀏覽器 快速入門

Selenium 庫裡有個叫 WebDriver 的 API。WebDriver 有點兒像可以載入網站的瀏覽器,但是它也可以像 BeautifulSoup 或者其他 Selector 物件一樣用來查詢頁面元素,與頁面上的元素進行互動 (傳送文字、點選等),以及執行其他動作來執行網路爬蟲。

注意: 我們使用的有介面瀏覽器,它雖然方便我們觀察,但是在實際運用中是非常消耗效能的 我們也可以使用Chrome的無介面瀏覽器,除了沒有瀏覽器介面以外,其它的相關操作都與有介面瀏覽器相同

# 使用selenium來載入動態網頁
# 首先要安裝selenium:pip3 install selinium
# selinium自身不帶瀏覽器驅動,我們要自己下載驅動

from selenium import webdriver
import time
#設定無頭瀏覽器
# options = webdriver.ChromeOptions()
# options.set_headless()

#建立一個瀏覽器的驅動
# driver = webdriver.Chrome(
#     executable_path='/home/ljh/桌面/tool/chromedriver',
#     options=options
# ) driver = webdriver.Chrome( executable_path='/home/ljh/桌面/tool/chromedriver', ) driver.get('http://www.baidu.com') #儲存螢幕的截圖 # driver.save_screenshot('baidu.png') #找到百度的輸入框 # driver.find_element_by_id('kw').send_keys('美男子') # #找到按鈕,模擬點選 # driver.find_element_by_id('su').click() # time.sleep(2) #隱式等待 driver.implicitly_wait(5) #新增顯式等待 #設定迴圈等待 from selenium.webdriver.support.ui import WebDriverWait #條件(根據條件尋找對應的節點) from selenium.webdriver.support import expected_conditions as EC driver_wait = WebDriverWait(driver,20) driver_wait.until( # EC.element_to_be_selected(driver.find_element_by_id('')) EC.presence_of_element_located((By.ID, "myDynamicElement")) ) # #通過連線的文字找對應的標籤 # driver.find_element_by_link_text('下一頁>').click() # driver.find_element_by_class_name('n').click() # time.sleep(5) # #返回前頁面 # driver.back() # time.sleep(5) # #前一頁 # driver.forward() # #關閉當前介面 # driver.close() #通過page_source直接能夠拿到經過瀏覽器渲染之後的頁面資料 #print(driver.page_source) # print(driver.get_cookies) # 獲取cookies值 # cookies = driver.get_cookies() # for cookie in cookies: # print(cookie['name']+':'+cookie['value']) # 拖拽和點選操作 from selenium.webdriver import ActionChains element = driver.find_element_by_xpath('//div[@id="u1"]/a[1]') #將滑鼠移動到指定的節點 # ActionChains(driver).move_to_element(element).perform() #將滑鼠移動到指定的節點並且點選該節點(單擊) ActionChains(driver).move_to_element(element).click(element).perform() #將滑鼠移動到指定的節點並且點選該節點(雙擊擊) ActionChains(driver).move_to_element(element).double_click(element).perform() ##### 在 ac 位置右擊 ActionChains(driver).move_to_element(action).context_click(action).perform() ##### 在 ac 位置左鍵單擊hold住 ActionChains(driver).move_to_element(action).click_and_hold(action).perform() ##### 將 ac1 拖拽到 ac2 位置 ac1 = driver.find_element_by_id("su") ac2 = driver.find_element_by_class_name('mnav') ActionChains(driver).drag_and_drop(ac1,ac2).perform() time.sleep(20) # #退出瀏覽器 driver.quit() #selenium的異常處理 from selenium.common.exceptions import TimeoutException,NoSuchElementException #請求超時,異常處理 try: driver.get('https://github.com/') except TimeoutError as err: print(err) #找不到節點的異常處理 try: driver.find_element_by_id('sbcks') except NoSuchElementException as err: print(err) selenium的瀏覽器驅動也可以執行js語句 #####執行JS語句 js = "document.body.scrollTop=10000" driver.execute_script(js)

刷csdn瀏覽量:

#首席那安裝selinium
from selenium import webdriver
import time
from lxml import etree
import json
#新增顯示等待
from selenium.webdriver.support.ui import WebDriverWait
#根據條件尋找對應節點
from selenium.webdriver.support import expected_conditions as EC


#設定無頭瀏覽器
# options=webdriver.ChromeOptions()
# options.set_headless()
#建立瀏覽器驅動
while True:
    driver = webdriver.Chrome(
        executable_path='/home/lbc/Documents/chromedriver',
        )
        # options=options 
    driver.get('http://www.baidu.com')
    #獲取cookie
    cookies = driver.get_cookies()

    cookie_dict = {}
    for cookie in cookies:
        cookie_dict[cookie['name']] = cookie['value']
    # print(cookie_dict)

    #顯示等待
    # driver_wait= WebDriverWait(driver,20)
    # driver_wait.until(
        
    # )
    # driver.save_screenshot('baidu.png')
    driver.find_element_by_id('kw').send_keys('小鋼蛋')
    #隱式等待
    # driver.implicitly_wait(3)

    driver.find_element_by_id('su').click()
    # driver.find_element_by_xpath('//h3[@class="t"]/a').click()('//div[@id="u1"]/a[1]')
    time.sleep(3)
    # driver.find_element_by_link_text('下一頁>').click()
    # time.sleep(3)
    #匯入滑鼠移入
    from selenium.webdriver import ActionChains
    #用xpath解析並拖拽滑鼠進行點選
    element = driver.find_element_by_xpath('//h3[@class="t"]/a[1]')
    #將滑鼠移動到指定的節點
    ActionChains(driver).move_to_element(element).perform()
    #將滑鼠移動到指定的節點並且點選該節點(單擊)
    ActionChains(driver).move_to_element(element).click(element).perform()

    #返回前頁面
    # driver.back()
    time.sleep(10)
    driver.quit()

    # driver.forward()