標籤:baidu re模組 匹配 表達 print web 不同 情境 內容
本文轉載:http://blog.csdn.net/u011541946/article/details/68485981
練習情境:在某一個網頁上有些欄位是我們感興趣的,我們希望摘取出來,進行其他動作。但是這些欄位可能在一個網頁的不同地方。例如,我們需要在關於百度頁面-聯絡我們,摘取全部的郵箱。
思路拆分:
1. 首先,需要得到當前頁面的source內容,就像,開啟一個頁面,右鍵-查看頁面原始碼。
2. 找出規律,通過Regex去摘取匹配的欄位,儲存到一個字典或者列表。
3. 迴圈列印字典或列表中內容,Python中用 for 語句實現。
技術角度實現相關方法:
1. 查看頁面的原始碼,在Selenium中有driver.page_source 這個方法得到
2. Python中利用正則,需要匯入re模組
3. for email in emails :
print email
1 # coding=utf-8 2 3 from selenium import webdriver 4 import re 5 6 driver = webdriver.Chrome() 7 driver.maximize_window() 8 driver.implicitly_wait(6) 9 10 driver.get("http://home.baidu.com/contact.html") 11 # 得到頁面原始碼 12 doc = driver.page_source 13 emails = re.findall(r‘[\w][email protected][\w\.-]+‘,doc) # 利用正則,找出 [email protected] 的欄位,儲存到emails列表 14 # 迴圈列印匹配的郵箱 15 for email in emails: 16 print (email)
解釋:
在pythonRegex文法中,Python中字串前面加上 r 表示原生字串,用\w表示匹配字母數字及底線。re模組下findall方法返回的是一個匹配子字串的列表。
Python+Selenium之摘取網頁上全部郵箱