1. 程式人生 > >[Python爬蟲]使用Selenium操作瀏覽器訂購火車票

[Python爬蟲]使用Selenium操作瀏覽器訂購火車票

cse input 相關 動態網頁 直接 教程 put vba 基礎

這個專題主要說的是Python在爬蟲方面的應用,包括爬取和處理部分

[Python爬蟲]使用Python爬取動態網頁-騰訊動漫(Selenium)

[Python爬蟲]使用Python爬取靜態網頁-鬥魚直播

[Python爬蟲]使用Python爬取動態網頁-豆瓣電影(JSON)

[Python爬蟲]使用Selenium操作瀏覽器訂購火車票

上節我們說了如何使用selenium打開網頁做些簡單操作

這節內容為操作瀏覽器自動訂購12306火車票


開發環境

操作系統:windows 10

Python版本 :3.6

爬取網頁模塊:selenium

分析網頁工具:xpath


關於Selenium

selenium 是一個Web自動測試的工具,可以用來操作一些瀏覽器Driver,例如Chrome,Firefox等,也可以使用一些headless的driver,例如Phantomjs

具體請參加官網:

http://selenium-python.readthedocs.io/

關於xpath

XPath 是一門在 XML 文檔中查找信息的語言。XPath 可用來在 XML 文檔中對元素和屬性進行遍歷。

XPath 是 W3C XSLT 標準的主要元素,並且 XQuery 和 XPointer 都構建於 XPath 表達之上。

因此,對 XPath 的理解是很多高級 XML 應用的基礎。

selenium可以使用xpath的形式來定位網頁元素,我們可以通過開發者模式的來獲取xpath路徑,但是不推薦直接引用

技術分享圖片

詳細教程查看如下網站

http://www.aibbt.com/a/18046.html

模塊安裝

pip3 install selenium

Chrome Driver 下載

這裏我們下載Chrome driver

其他的driver見官網

http://selenium-python.readthedocs.io/installation.html#drivers

技術分享圖片

下載完成後可以放到系統環境變量中,如:

C:\Windows\System32

技術分享圖片

https://sites.google.com/a/chromium.org/chromedriver/downloads

程序原理

技術分享圖片

代碼介紹

1. import相關的模塊

import selenium.webdriver

from selenium.webdriver.common.keys import Keys

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

2. 調用Chrome

driver = selenium.webdriver.Chrome()

3. 定位用戶名密碼

find_element_by_id表示使用id屬性進行查找input標簽

username= driver.find_element_by_id(‘username‘)

password= driver.find_element_by_id(‘password‘)

4. 清除用戶名密碼輸入框內容

username.clear()

password.clear()

5. 自動輸入用戶名密碼

username.send_keys("username")

password.send_keys("password")

6. 判斷是否登陸成功

技術分享圖片

7. 選擇出發地,目的地,時間後點擊查詢

技術分享圖片

8. 填寫需要訂購的火車車次

多個車次使用列表形式,冒號後面位表格的ID屬性值,不包括ticket_

tickets=[‘D3094:5l000D309460‘,‘G7024:51000d702454‘]

技術分享圖片

9.獲取預定,二等座,無座的xpath

yd_path=‘//*[@id="ticket_‘+path+‘"]/td[13]/a‘

edz_path=‘//*[@id="ticket_‘+path+‘"]/td[4]‘

wz_path = ‘//*[@id="ticket_‘ + path + ‘"]/td[11]‘

10. 判斷是否可訂購

該語句表示判斷是否可點擊,超時時間為10s

以及是否有票

技術分享圖片

11. 確認選座

技術分享圖片

執行結果

技術分享圖片


註意事項:

  1. 打開新的頁面請使用selenium wait功能以使頁面完全加載
  2. 最後提交的時候可能會需要再次輸入用戶名密碼,輸入即可
  3. 本腳本僅用於學習用途
  4. http://www.aibbt.com/a/18046.html

源碼位置:

源碼請訪問我的github主頁也可點擊閱讀全文:

https://github.com/bsbforever/spider/blob/master/selenium_12306.py

[Python爬蟲]使用Selenium操作瀏覽器訂購火車票