Selenium?是一款強大的基于瀏覽器的開源自動化測試工具,最初由 Jason Huggins 于 2004 年在 ThoughtWorks 發(fā)起,它提供了一套簡單易用的 API,模擬瀏覽器的各種操作,方便各種 Web 應(yīng)用的自動化測試。
它的取名很有意思,因為當(dāng)時最流行的一款自動化測試工具叫做 QTP,是由 Mercury 公司開發(fā)的商業(yè)應(yīng)用。Mercury 是化學(xué)元素汞,而 Selenium 是化學(xué)元素硒,汞有劇毒,而硒可以解汞毒,它對汞有拮抗作用。
Selenium 的核心組件叫做 Selenium-RC(Remote Control),簡單來說它是一個代理服務(wù)器,瀏覽器啟動時通過將它設(shè)置為代理,它可以修改請求響應(yīng)報文并向其中注入 Javascript,通過注入的 JS 可以模擬瀏覽器操作,從而實現(xiàn)自動化測試。
但是注入 JS 的方法存在很多限制,譬如無法模擬鍵盤和鼠標(biāo)事件,處理不了對話框,不能繞過 JavaScript 沙箱等等。
就在這個時候,于 2006 年左右,Google 的工程師 Simon Stewart 發(fā)起了 WebDriver 項目,WebDriver 通過調(diào)用瀏覽器提供的原生自動化 API 來驅(qū)動瀏覽器,解決了 Selenium 的很多疑難雜癥。不過 WebDriver 也有它不足的地方,它不能支持所有的瀏覽器,需要針對不同的瀏覽器來開發(fā)不同的 WebDriver,因為不同的瀏覽器提供的 API 也不盡相同,好在經(jīng)過不斷的發(fā)展,各種主流瀏覽器都已經(jīng)有相應(yīng)的 WebDriver 了。最終 Selenium 和 WebDriver 合并在一起,這就是 Selenium 2.0,有的地方也直接把它稱作 WebDriver。
Selenium 目前最新的版本已經(jīng)是 3.9 了,WebDriver 仍然是 Selenium 的核心。
為什么 Selenium 成了爬蟲工具
Selenium 的初衷是打造一款優(yōu)秀的自動化測試工具,但是慢慢的人們就發(fā)現(xiàn),Selenium 的自動化用來做爬蟲正合適。我們知道,傳統(tǒng)的爬蟲通過直接模擬 HTTP 請求來爬取站點信息,由于這種方式和瀏覽器訪問差異比較明顯,很多站點都采取了一些反爬的手段,而 Selenium 是通過模擬瀏覽器來爬取信息,其行為和用戶幾乎一樣,反爬策略也很難區(qū)分出請求到底是來自 Selenium 還是真實用戶。而且通過 Selenium 來做爬蟲,不用去分析每個請求的具體參數(shù),比起傳統(tǒng)的爬蟲開發(fā)起來更容易。
Selenium 爬蟲唯一的不足是慢,如果你對爬蟲的速度沒有要求,那使用 Selenium 是個非常不錯的選擇。Selenium 提供了多種語言的支持(Java、.NET、Python、Ruby 等),不論你是用哪種語言開發(fā)爬蟲,Selenium 都適合你。
這是因為 Selenium 啟動都需要調(diào)用瀏覽器的核心來啟動一個瀏覽器。
同時,當(dāng)瀏覽器訪問網(wǎng)站的時候,如果數(shù)據(jù)沒有載入完全,Selenium 是不會對數(shù)據(jù)進行分析的,有些網(wǎng)站的載入很慢,這樣就導(dǎo)致 Selenium 的處理很慢。
這個不是因為 Selenium 程序慢,而是等待數(shù)據(jù)載入的時間太長。
啟動瀏覽器
使用下面 3 句話就可以模擬啟動一個瀏覽器,并且通過瀏覽器訪問一個網(wǎng)站后,對網(wǎng)站來進行分析。
from selenium.webdriver import Chrome
chrome = Chrome(service=Service(r"C:\Users\yhu\Downloads\chromedriver-win64\chromedriver-win64\chromedriver.exe"))
chrome.get('https://www.isharkfly.com/')
// Get Element
rowContent = chrome.find_elements(By.XPATH, '/html/body/div[3]/div/div/div/div[4]/div/table/tbody/tr')
如實例沒有啟動的話,獲得元素的代碼就沒有辦法執(zhí)行。
其實慢就是慢在這里。文章來源:http://www.zghlxwxcb.cn/news/detail-719307.html
Python 和 Selenium 的瀏覽器爬蟲 - Python - iSharkFly文章來源地址http://www.zghlxwxcb.cn/news/detail-719307.html
到了這里,關(guān)于Python 和 Selenium 的瀏覽器爬蟲的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!