1. 程式人生 > >Python+Selenium練習篇之1-摘取網頁上全部郵箱

Python+Selenium練習篇之1-摘取網頁上全部郵箱

前面已經介紹了Python+Selenium基礎篇,通過前面幾篇文章的介紹和練習,Selenium+Python的webUI自動化測試算是入門了。接下來,我計劃寫第二個系列:練習篇,通過一些練習,瞭解和掌握一些Selenium常用的介面或者方法。

      練習場景:在某一個網頁上有些欄位是我們感興趣的,我們希望摘取出來,進行其他操作。但是這些欄位可能在一個網頁的不同地方。例如,我們需要在關於百度頁面-聯絡我們,摘取全部的郵箱。

 

 

思路拆分:

1. 首先,需要得到當前頁面的source內容,就像,開啟一個頁面,右鍵-檢視頁面原始碼。

2. 找出規律,通過正則表示式去摘取匹配的欄位,儲存到一個字典或者列表。

3. 迴圈列印字典或列表中內容,Python中用 for 語句實現。

 

技術角度實現相關方法:

1. 檢視頁面的原始碼,在Selenium中有driver.page_source 這個方法得到

2. Python中利用正則,需要匯入re模組

3. for email in emails :

          print email

 

想法技術角度方法都找到,我們新建一個extract_email.py 檔案,輸入如下程式碼:

# coding=utf-8

from selenium import webdriver
import re

driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(6)

driver.get("http://home.baidu.com/contact.html")
# 得到頁面原始碼
doc = driver.page_source
emails = re.findall(r'[\w][email protected][\w\.-]+',doc) # 利用正則,找出 [email protected]

的欄位,儲存到emails列表
# 迴圈列印匹配的郵箱
for email in emails:
print (email)
解釋:

在python正則表示式語法中,Python中字串前面加上 r 表示原生字串,用\w表示匹配字母數字及下劃線。re模組下findall方法返回的是一個匹配子字串的列表。

 

執行結果: