Python第三方库使用——splinter
生活随笔
收集整理的這篇文章主要介紹了
Python第三方库使用——splinter
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
功能:實現(xiàn)與html標簽的交互,例如用編程的方式實現(xiàn)對頁面中某一按鍵的點擊,實現(xiàn)對文本框的填寫。
準備
-
安裝
pip install splinter -
下載瀏覽器(推薦使用chrome)驅動(默認調用的是 firefox)
請點擊如下網(wǎng)站下載與自己操作系統(tǒng)相匹配的驅動程序。
http://chromedriver.storage.googleapis.com/index.html?path=2.20/
基本用法
如想獲得直觀的演示效果,推薦使用ipython,實現(xiàn)一種交互式的命令響應。
>>> from splinter.browser import Browser
獲得網(wǎng)頁的“句柄”
>>> b = Browser(driver_name='chrome')# 此時會打開chrome瀏覽器,# b這個Browser對象會持有后續(xù)操作的頁面# 可將其理解為頁面的句柄# 也即通過操縱b來實現(xiàn)對頁面的操縱
訪問某一站點
>>> url='https://www.baidu.com'
>>> b.visit(url)# 會在瀏覽器中打開百度首頁# 是不是很神奇,通過代碼的方式實現(xiàn)以前手動完成的事# 更神奇的還在后面
使用百度進行關鍵字的檢索
為避免中英文編碼方式的影響,這里我們統(tǒng)一使用頁面標簽的id屬性而非text屬性。
如,我們按如下的方式獲取百度輸入框的name屬性值。
>>> b.fill('wd', 'splinter')
我們可以獲得百度一下所標示的按鈕,然后通過代碼的方式實現(xiàn)對該按鈕的點擊。
>>> btn = b.find_by_id('kw')
>>> btn.click()
或者連寫:
>>> b.find_by_id('kw').click()
注,因為當前百度搜索填寫關鍵字會觸發(fā)搜索結果的顯示,所以這項演示似乎看起來click和不click影響不大。
雜項
# 判斷頁面是否存在
>>> b.is_text_present('splinter.cobrateam.info')
True# 退出
>>> b.quit()
一個實例
我們通過如下簡單的代碼實現(xiàn)對12306網(wǎng)站的相關標簽的設置(以代碼的形式操縱而非手動):
登錄
>>> from splinter.browser import Browser
>>> url = 'https://kyfw.12306.cn/otn/leftTicket/init'
>>> b = Browser(driver_name='chrome')
>>> b.visit(url)>>> b.find_by_id('login_user').click()# 點擊登錄按鈕
>>> b.fill('loginUserDTO.user_name', '****@qq.com')
>>> b.fill('userDTO.password', '****')# 無奈,此時并不能通過簡單的設置繞過驗證碼
以cookie的形式設置始發(fā)站、終點站以及日期
>>> b.cookie.all()# 顯示當前cookie,并無站點實現(xiàn)信息
2
3
4
{u'BIGipServerotn': u'1977155850.38945.0000',u'JSESSIONID': u'0A01D97598F459F751C4AE8518DBFB300DA7001B67',u'__NRF': u'95D48FC2E0E15920BFB61C7A330FF2AE',u'current_captcha_type': u'Z'}
# 然后我們填寫出發(fā)站,以下信息均需自己事先填寫
>>> b.cookies.add({"_jc_save_fromStation":"%u4E0A%u6D77%2CSHH"})# 添加目的地
>>> b.cookies.add({u'_jc_save_toStation':'%u6C38%u5DDE%2CAOQ'})# 添加出發(fā)日期
>>> b.cookies.add({"_jc_save_fromDate":"2016-01-23"})# 注,如果需要對相關信息進行修改的話,調用的是add方法,這和字典的操作相兼容
>>> b.cookies.add({u'_jc_save_toStation':'xxxxxx'})
>>> b.cookies.all()
{u'BIGipServerotn': u'1977155850.38945.0000',u'JSESSIONID': u'0A01D97598F459F751C4AE8518DBFB300DA7001B67',u'__NRF': u'95D48FC2E0E15920BFB61C7A330FF2AE',u'_jc_save_fromDate': u'2016-01-20',u'_jc_save_fromStation': u'%u4E0A%u6D77%2CSHH',u'_jc_save_toStation': u'%u6C38%u5DDE%2CAOQ',u'current_captcha_type': u'Z'}
cookie準備完畢,reload然后開始查詢:
>>> b.reload()
>>>
總結
以上是生活随笔為你收集整理的Python第三方库使用——splinter的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL Server Denali:SS
- 下一篇: 金晨亲手交付“超级爆品”,广州车展百人喜