程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python爬蟲——Selenium

編輯:Python

目錄

  • 簡介
    • 官網介紹
    • 個人理解
  • 環境搭建
  • selenium webdriver的使用
  • Selenium應用
    • 實現12306拖拽登錄驗證實例
    • 利用超級鷹登錄超級鷹網站圖片驗證實例

簡介

官網介紹

selenium是最廣泛使用的開源Web UI(用戶界面)自動化測試套件之一。

個人理解

selenium: 自動化測試工具

讓我的程序連接到浏覽器,讓浏覽器來完成各種復雜的操作,我們只接受最終的結果

可以打開浏覽器。然後像人一樣去操作浏覽器, 程序員可以selenium中直接提取網頁上的各種信息

環境搭建

1、

pip install selenium -i清華源

2、下載浏覽器驅動; https://npm.taobao.org/mirrors/chromedriver
3、把解壓縮的浏覽器驅動chromedriver 放在python解釋器所在的文件夾
4、讓selenium啟動谷歌浏覽器

selenium webdriver的使用

----首先創建浏覽器對象(以Chrome為例)
driver = Chrome()

  1. 獲取網頁,獲取網頁有兩種方法:

使用Get方法 -driver.get("www.yiibai.com");

使用Navigate方法 -driver.navigate().to("https://yiibai.com/selenium/");

  1. 查找表單並發送用戶輸入
web.find_element_by_xpath('//[@id="JuserName"]').send_keys('***')
  1. 清除用戶輸入
    clear()方法用於從文本框中清除用戶輸入。
driver.find_element_by_xpath().clear();
  1. 通過Web元素獲取數據
    有時需要獲取通過web元素寫入的文本來執行某些斷言和調試。使用getText()方法來獲取通過任何web元素寫入的數據。
driver.find_element_by_xpath(**).getText();
  1. 執行Click事件
    click()方法用於對任何Web元素執行單擊操作。
driver.find_element_by_xpath(**).click();
  1. 在浏覽器歷史記錄中向後導航
driver.navigate().back();
  1. 在浏覽器歷史記錄中向前導航
driver.navigate().forward();
  1. 刷新/重新加載網頁
driver.navigate().refresh();
  1. 關閉浏覽器
driver.close();
  1. 關閉浏覽器和與驅動程序關聯的其他所有其他窗口
driver.quit();
  1. 在Windows之間移動
driver.switch_to_window(web.window_handles[])

返回上一個窗口

web.switch_to_default_content()
  1. 在 frame 之間移動
web.switch_to_frame(**)
  1. 拖放
    使用Action類執行拖放操作。
WebElement element = driver.findElement(By.name("source"));
WebElement target = driver.findElement(By.name("target"));

14.無頭浏覽器的實現

opt = Options()
```java
# opt.add_argument("--headless")
# opt.add_argument("--disable-gpu")
opt.add_argument('--disable-blink-features=AutomationControlled')
#1.創建浏覽器對象
web = Chrome(options=opt)

Selenium應用

實現12306拖拽登錄驗證實例


from selenium.webdriver.chrome.options import Options
from selenium.webdriver import Chrome
from selenium.webdriver.common.keys import Keys
import time
from selenium.webdriver.common.action_chains import ActionChains
opt = Options()
# opt.add_argument("--headless")
# opt.add_argument("--disable-gpu")
opt.add_argument('--disable-blink-features=AutomationControlled')
#1.創建浏覽器對象
web = Chrome(options=opt)
# 2.打開一個網址
web.get("https://kyfw.12306.cn/otn/resources/login.html")
print(web.title)
web.find_element_by_xpath('//*[@id="toolbar_Div"]/div[2]/div[2]/ul/li[2]/a').click()
web.find_element_by_xpath('//*[@id="J-userName"]').send_keys('用戶名')
web.find_element_by_xpath('//*[@id="J-password"]').send_keys('密碼')
web.find_element_by_xpath('//*[@id="J-login"]').click()
time.sleep(3)
index = web.find_element_by_xpath('//*[@id="nc_1__scale_text"]/span')
ActionChains(web).drag_and_drop_by_offset(index, 300, 0).perform()

利用超級鷹登錄超級鷹網站圖片驗證實例

from chaojiying import Chaojiying_Client
from selenium.webdriver import Chrome
from selenium.webdriver.common.keys import Keys
web = Chrome()
web.get("https://www.chaojiying.com/user/login/")
image = web.find_element_by_xpath("/html/body/div[3]/div/div[3]/div[1]/form/div/img").screenshot_as_png
chaojiying = Chaojiying_Client('用戶名', '密碼', 'id')
print(chaojiying.PostPic(image, 1902))
dic = chaojiying.PostPic(image, 1902)
vs = dic['pic_str']
web.find_element_by_xpath("/html/body/div[3]/div/div[3]/div[1]/form/p[1]/input").send_keys('用戶名')
web.find_element_by_xpath("/html/body/div[3]/div/div[3]/div[1]/form/p[2]/input").send_keys('密碼')
web.find_element_by_xpath("/html/body/div[3]/div/div[3]/div[1]/form/p[3]/input").send_keys(vs,Keys.ENTER)

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved