Selenium用于爬蟲的基本用法總結(jié)

Selenium本來是一個用于自動化測試的框架,但是因為它能夠完全模擬瀏覽器的行為,因此在爬蟲中也可以發(fā)揮很大的作用,對于一些有很嚴格的反爬措施的網(wǎng)站,比如,驗證碼,請求中帶有加密字段,或者動態(tài)加載請求,這些情況下都可以將Selenium作為爬蟲的選擇,會省去很多折騰的時間,當然缺點是每次運行的效率會比較低,所以看個人的取舍吧
下面總結(jié)一下在Python爬蟲中經(jīng)常用到的Selenium的一些功能,需要先安裝selenium庫,同時,還需要下載chromedriver,并添加環(huán)境變量

基本的網(wǎng)頁抓取

首先是初始化:

from selenium import webdriver 
 driver=webdriver.Chrome() 

接下來,要訪問某個網(wǎng)頁,并獲得其中的內(nèi)容,使用:

driver.get(url)
a = driver.page_source

就獲得了頁面的內(nèi)容,這時可以使用BeautifulSoup來解析頁面,也可以使用正則表達式

對網(wǎng)頁進行簡單操作

我們還可以通過Selenium在網(wǎng)頁中進行輸入、按鍵等操作,比如當我們想要實現(xiàn)登錄或者查詢的時候:

from selenium.webdriver.common.keys import Keys

a=driver.find_element_by_xpath('')
b=driver.find_element_by_id("")

通過以上的語句,你可以定位a或者b到頁面中的輸入框、單選框、或者確認按鈕(登錄按鈕,搜索按鈕...),接下來,要按下按鈕或者輸入文本或者按下鍵盤上的某個快捷組合鍵,使用下面的語句:

b.send_keys("text")
a.send_keys(Keys.ENTER)
a.send_keys(Keys.CONTROL+'a')

自定義瀏覽器

初始化瀏覽器時是用的默認配置,我們還可以在此基礎上進行更多的配置,比如自定義請求頭,添加代理等。比如自定義請求頭:

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('User-Agent="Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10"')    # 設置User-Agent
chrome_options.add_argument('--proxy-server=http://52.42.234.31:80')    #設置代理
chrome_options.add_argument('Host="www.itdecent.cn"')    #設置其他請求頭內(nèi)容

還可以設置chrome為無頭瀏覽器,這樣運行的時候就不會彈出chrome的界面:

chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('log-level=3')    #設置運行時顯示在命令行中的信息級別,這樣顯示的信息較少

設置完成后,在初始化時,使用:
driver = webdriver.Chrome(chrome_options=chrome_options)
來完成設置

在同一個瀏覽器中多開窗口

如果我們運行一個程序需要訪問很多個頁面,那么初始化多個chrome也許不是最好的選擇,初始化一次,在同一個瀏覽器中多開窗口可以提升一定的效率,為了實現(xiàn)這個功能,需要用到簡單的JavaScript:

js=window.open(url);
driver.execute_script(js)
handles=op.window_handles
driver.switch_to_window(handles[1])

其中handles是用來控制當前窗口的,并且通過switch_to_window,可以在不同的窗口之間切換,由于selenium加載網(wǎng)頁一般都較慢,所以可以在處理某個頁面之前提前將下一個頁面打開,這樣可以讓瀏覽器一邊加載然后程序一邊往下運行,節(jié)約了一定的加載時間

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標準。 注意:講述HT...
    kismetajun閱讀 28,804評論 1 45
  • 這篇文章在介紹官網(wǎng)的同時使用了比較多的腳本示例,示例里遇到的問題有部分在本篇文章進行了解釋,還有一篇文章專門記錄了...
    顧顧314閱讀 13,083評論 3 32
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 14,128評論 1 92
  • 摘要: 之前用Selenium做UI自動化測試從初學到熟練碰到過很多問題,這里就不一一細說了,所以把最基本的操作都...
    Vicky_習慣做唯一閱讀 11,643評論 1 23
  • 現(xiàn)狀 好久好久沒有更新博客了,應該有一個月了吧,這段時間內(nèi),好忙,公司的業(yè)務在上漲期,但是卻把下面的一個小朋友砍掉...
    jb2閱讀 1,418評論 0 2

友情鏈接更多精彩內(nèi)容