国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python爬蟲基礎(chǔ)之Selenium詳解

這篇具有很好參考價(jià)值的文章主要介紹了Python爬蟲基礎(chǔ)之Selenium詳解。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

原文地址:https://program-park.top/2023/10/16/reptile_3/

本文章中所有內(nèi)容僅供學(xué)習(xí)交流使用,不用于其他任何目的,嚴(yán)禁用于商業(yè)用途和非法用途,否則由此產(chǎn)生的一切后果均與作者無(wú)關(guān)。

1. Selenium簡(jiǎn)介

??Selenium 是一個(gè)用于 Web 應(yīng)用程序測(cè)試的工具。最初是為網(wǎng)站自動(dòng)化測(cè)試而開(kāi)發(fā)的,可以直接運(yùn)行在瀏覽器上,支持的瀏覽器包括 IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera 和 Edge 等。
??爬蟲中使用它是為了解決 requests 無(wú)法直接執(zhí)行 JavaScript 代碼的問(wèn)題。Selenium 本質(zhì)上是通過(guò)驅(qū)動(dòng)瀏覽器,徹底模擬瀏覽器的操作,好比跳轉(zhuǎn)、輸入、點(diǎn)擊、下拉等,來(lái)拿到網(wǎng)頁(yè)渲染之后的結(jié)果。Selenium 是 Python 的一個(gè)第三方庫(kù),對(duì)外提供的接口能夠操作瀏覽器,從而讓瀏覽器完成自動(dòng)化的操作。

2. 為什么使用Selenium?

??Selenium 能模擬瀏覽器功能自動(dòng)執(zhí)行網(wǎng)頁(yè)中的 JavaScript 代碼,實(shí)現(xiàn)動(dòng)態(tài)加載。

3. Selenium的安裝

??谷歌瀏覽器驅(qū)動(dòng)下載地址:https://registry.npmmirror.com/binary.html?path=chromedriver/
??查看自己谷歌瀏覽器的版本,我這里的版本是正式版本116.0.5845.188,驅(qū)動(dòng)下載地址最新的只有114.0.5735.90,所以只能去官網(wǎng)的測(cè)試頁(yè)面下載118.0.5993.70版本的驅(qū)動(dòng)(https://googlechromelabs.github.io/chrome-for-testing/#stable,版本向下兼容),然后把下載的壓縮包解壓,將exe文件放入 PyCharm 項(xiàng)目的根目錄下。
??之后執(zhí)行pip install selenium命令,安裝 selenium 庫(kù)。

4. Selenium的使用

from selenium import webdriver

# 創(chuàng)建瀏覽器操作對(duì)象
path = 'chromedriver.exe'
browser= webdriver.Chrome(path)

# 訪問(wèn)網(wǎng)站
url = 'https://www.baidu.com'

browser.get(url)
# content = browser.page_source
# print(content)

??需要注意的是,如果你的 selenium 是4.11.2以上的版本,不需要設(shè)置driver.exe的路徑,selenium 可以自己處理瀏覽器的驅(qū)動(dòng)程序,因此代碼直接改為brower = webdriver.Chrome()即可。
??運(yùn)行代碼,得到下面的效果:

Python爬蟲基礎(chǔ)之Selenium詳解,爬蟲,python,爬蟲,selenium

5. Selenium的元素定位

??自動(dòng)化工具要做的就是模擬鼠標(biāo)和鍵盤來(lái)操作點(diǎn)擊、輸入等等元素,但是操作這些元素的前提是找到它們,WebDriver 提供了很多元素定位的方法:

  • 根據(jù)標(biāo)簽 id 獲取元素:
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    
    # 創(chuàng)建瀏覽器操作對(duì)象
    # path = 'chromedriver.exe'
    browser= webdriver.Chrome()
    
    # 訪問(wèn)網(wǎng)站
    url = 'https://www.baidu.com'
    browser.get(url)
    
    button = browser.find_element(By.ID, 'su')
    # button = browser.find_elements(By.ID, 'su')
    print(button)
    
  • 根據(jù)標(biāo)簽 name 屬性的值獲取元素:
    button = browser.find_element(By.NAME, 'wd')
    print(button)
    
  • 根據(jù) Xpath 語(yǔ)句獲取元素;
    button = browser.find_element(By.XPATH, '//input[@id="su"]')
    print(button)
    
  • 根據(jù)標(biāo)簽名獲取元素:
    button = browser.find_elements(By.TAG_NAME, 'input')
    print(button)
    
  • 根據(jù) bs4 語(yǔ)法獲取元素:
    button = browser.find_elements(By.CSS_SELECTOR, '#su')
    print(button)
    
  • 根據(jù)標(biāo)簽的文本獲取元素(精確定位):
    button = browser.find_elements(By.LINK_TEXT, '地圖')
    print(button)
    
  • 根據(jù)標(biāo)簽的文本獲取元素(模糊定位):
    button = browser.find_elements(By.PARTIAL_LINK_TEXT, '地')
    print(button)
    
  • 根據(jù) class 屬性獲取元素:
    button = browser.find_element(By.CLASS_NAME, 'wrapper_new')
    print(button)
    

??當(dāng)我們定位到元素之后,自然就要考慮如何獲取到元素的各種信息,selenium 給我們提供了獲取元素不同信息的方法:

  • 獲取元素屬性:
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    
    # 創(chuàng)建瀏覽器操作對(duì)象
    # path = 'chromedriver.exe'
    browser= webdriver.Chrome()
    
    # 訪問(wèn)網(wǎng)站
    url = 'https://www.baidu.com'
    browser.get(url)
    
    button = browser.find_element(By.ID, 'su')
    print(input.get_attribute('class'))
    
  • 獲取元素標(biāo)簽名:
    input = browser.find_element(By.ID, 'su')
    print(input.tag_name)
    
  • 獲取元素文本:
    input = browser.find_element(By.ID, 'su')
    print(input.text)
    
  • 獲取元素位置:
    input = browser.find_element(By.ID, 'su')
    print(input.location)
    
  • 獲取元素大?。?/strong>
    input = browser.find_element(By.ID, 'su')
    print(input.size)
    

6. Selenium的交互

??頁(yè)面交互指的是我們平時(shí)在瀏覽器上的各種操作,比如輸入文本、點(diǎn)擊鏈接、回車、下拉框等,下面就演示 selenium 是如何進(jìn)行頁(yè)面交互的。

  • 輸入文本:
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    import time
    
    # 創(chuàng)建瀏覽器操作對(duì)象
    # path = 'chromedriver.exe'
    browser = webdriver.Chrome()
    
    # 訪問(wèn)網(wǎng)站
    url = 'https://www.baidu.com'
    browser.get(url)
    
    # 定位輸入框
    input = browser.find_element(By.ID, 'kw')
    # 輸入文本selenium
    input.send_keys('selenium')
    time.sleep(2)
    
    # 關(guān)閉瀏覽器
    browser.close()
    
  • 點(diǎn)擊:
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    import time
    
    # 創(chuàng)建瀏覽器操作對(duì)象
    # path = 'chromedriver.exe'
    browser = webdriver.Chrome()
    
    # 訪問(wèn)網(wǎng)站
    url = 'https://www.baidu.com'
    browser.get(url)
    
    # 定位輸入框
    input = browser.find_element(By.ID, 'kw')
    # 輸入文本selenium
    input.send_keys('selenium')
    time.sleep(2)
    
    # 定位百度一下的按鈕
    button = browser.find_element(By.ID, 'su')
    # 點(diǎn)擊按鈕
    button.click()
    time.sleep(2)
    
    # 關(guān)閉瀏覽器
    browser.close()
    
  • 清除文本:
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    import time
    
    # 創(chuàng)建瀏覽器操作對(duì)象
    # path = 'chromedriver.exe'
    browser = webdriver.Chrome()
    
    # 訪問(wèn)網(wǎng)站
    url = 'https://www.baidu.com'
    browser.get(url)
    
    # 定位輸入框
    input = browser.find_element(By.ID, 'kw')
    # 輸入文本selenium
    input.send_keys('selenium')
    time.sleep(2)
    
    # 清除selenium
    input.clear()
    time.sleep(2)
    
    # 關(guān)閉瀏覽器
    browser.close()
    
  • 回車確認(rèn):
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    import time
    
    # 創(chuàng)建瀏覽器操作對(duì)象
    # path = 'chromedriver.exe'
    browser = webdriver.Chrome()
    
    # 訪問(wèn)網(wǎng)站
    url = 'https://www.baidu.com'
    browser.get(url)
    
    # 定位輸入框
    input = browser.find_element(By.ID, 'kw')
    # 輸入文本selenium
    input.send_keys('selenium')
    time.sleep(2)
    
    # 回車查詢
    input.submit()
    time.sleep(2)
    
    # 關(guān)閉瀏覽器
    browser.close()
    
  • 運(yùn)行 JavaScript:
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    import time
    
    # 創(chuàng)建瀏覽器操作對(duì)象
    # path = 'chromedriver.exe'
    browser = webdriver.Chrome()
    
    # 訪問(wèn)網(wǎng)站
    url = 'https://www.baidu.com'
    browser.get(url)
    
    # 定位輸入框
    input = browser.find_element(By.ID, 'kw')
    # 輸入文本selenium
    input.send_keys('selenium')
    time.sleep(2)
    
    # 回車查詢
    input.submit()
    time.sleep(2)
    
    # js代碼
    js_bottom = 'document.documentElement.scrollTop=100000'
    # 下拉進(jìn)度條,頁(yè)面滑動(dòng)
    browser.execute_script(js_bottom)
    time.sleep(2)
    
    # 關(guān)閉瀏覽器
    browser.close()
    
  • 前進(jìn)后退
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    import time
    
    # 創(chuàng)建瀏覽器操作對(duì)象
    # path = 'chromedriver.exe'
    browser = webdriver.Chrome()
    
    # 訪問(wèn)網(wǎng)站
    url = 'https://www.baidu.com'
    browser.get(url)
    
    # 定位輸入框
    input = browser.find_element(By.ID, 'kw')
    # 輸入文本selenium
    input.send_keys('selenium')
    time.sleep(2)
    
    # 回車查詢
    input.submit()
    time.sleep(2)
    
    # js代碼
    js_bottom = 'document.documentElement.scrollTop=100000'
    # 頁(yè)面滑動(dòng)
    browser.execute_script(js_bottom)
    time.sleep(2)
    
    # 定位下一頁(yè)的按鈕
    next = browser.find_element(By.XPATH, '//a[@class="n"]')
    # 點(diǎn)擊下一頁(yè)
    next.click()
    time.sleep(2)
    
    # 返回到上一頁(yè)面
    browser.back()
    time.sleep(2)
    
    # 前進(jìn)到下一頁(yè)
    browser.forward()
    time.sleep(2)
    
    # 關(guān)閉瀏覽器
    browser.close()
    

7. Chrome handless

??在上面的測(cè)試過(guò)程中可以發(fā)現(xiàn),雖然 selenium 簡(jiǎn)便好用,但是它的運(yùn)行速度很慢,這是因?yàn)?selenium 是有界面的,需要執(zhí)行前端 css 和 js 的渲染。那么下面就介紹一個(gè)無(wú)界面的瀏覽器,Chrome-handless 模式,運(yùn)行效率要比真實(shí)的瀏覽器快很多,在 selenium 的基礎(chǔ)上,支持頁(yè)面元素查找、js 執(zhí)行等,代碼和 selenium 一致。
??使用前提:

  • Chrome
    • Unix\Linux chrome >= 59
    • Windows chrome >= 60
  • Python >= 3.6
  • Selenium >= 3.4.*
from selenium import webdriver

def share_browser():
    # headless自帶配置,不需要再做額外的修改
    from selenium.webdriver.chrome.options import Options
    # 初始化
    chrome_options = Options()
    chrome_options.add_argument('‐‐headless')
    chrome_options.add_argument('‐‐disable‐gpu')
    # 谷歌瀏覽器的安裝路徑
    path = r'C:\Users\\AppData\Local\Google\Chrome\Application\chrome.exe'
    chrome_options.binary_location = path
    browser = webdriver.Chrome(options=chrome_options)
    return browser

browser = share_browser()
url = 'https://www.baidu.com'
browser.get(url)

# 本地保存照片
browser.save_screenshot('baidu.png')

參考文獻(xiàn)

??【1】http://www.noobyard.com/article/p-boitcibx-g.html
??【2】https://www.jb51.net/article/149145.htm
??【3】https://zhuanlan.zhihu.com/p/462460461
??【4】https://blog.csdn.net/weixin_67553250/article/details/127555724
??【5】https://www.cnblogs.com/Summer-skr–blog/p/11491078.html
??【6】https://www.bilibili.com/video/BV1Db4y1m7Ho?p=77文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-722464.html

到了這里,關(guān)于Python爬蟲基礎(chǔ)之Selenium詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Python爬蟲之selenium庫(kù)使用詳解

    什么是Selenium selenium 是一套完整的web應(yīng)用程序測(cè)試系統(tǒng),包含了測(cè)試的錄制(selenium IDE),編寫及運(yùn)行(Selenium Remote Control)和測(cè)試的并行處理(Selenium Grid)。Selenium的核心Selenium Core基于JsUnit,完全由JavaScript編寫,因此可以用于任何支持JavaScript的瀏覽器上。 selenium可以模擬真

    2023年04月19日
    瀏覽(18)
  • 【零基礎(chǔ)入門Python爬蟲】第三節(jié) Python Selenium

    Python Selenium 是一種自動(dòng)化測(cè)試框架,可以模擬用戶在瀏覽器中的交互行為。它是一個(gè)基于瀏覽器驅(qū)動(dòng)程序的工具,可用于Web應(yīng)用程序測(cè)試、數(shù)據(jù)采集等方面,能夠讓開(kāi)發(fā)人員通過(guò)代碼自動(dòng)化地模擬用戶在瀏覽器中的操作,并獲取到所需的數(shù)據(jù)。 Selenium的主要優(yōu)勢(shì)是它可以模擬

    2024年02月04日
    瀏覽(19)
  • (十四)python網(wǎng)絡(luò)爬蟲(理論+實(shí)戰(zhàn))——爬蟲利器selenium詳解

    目錄 6?selenium的介紹和使用 ? ? ?6.1 爬蟲遇到的難點(diǎn)

    2023年04月08日
    瀏覽(43)
  • 【Python爬蟲開(kāi)發(fā)基礎(chǔ)⑩】selenium概述

    ?? 個(gè)人主頁(yè) :為夢(mèng)而生~ 關(guān)注我一起學(xué)習(xí)吧! ?? 專欄 :python網(wǎng)絡(luò)爬蟲從基礎(chǔ)到實(shí)戰(zhàn) 歡迎訂閱!后面的內(nèi)容會(huì)越來(lái)越有意思~ ?? 往期推薦 : ??前面比較重要的 基礎(chǔ)內(nèi)容 : 【Python爬蟲開(kāi)發(fā)基礎(chǔ)⑥】計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)(Web和HTTP) 【Python爬蟲開(kāi)發(fā)基礎(chǔ)⑦】urllib庫(kù)的基本使用

    2024年02月12日
    瀏覽(16)
  • Python爬蟲之selenium的基礎(chǔ)使用

    Python爬蟲之selenium的基礎(chǔ)使用

    一.本文背景及概要 筆者在Python爬蟲的學(xué)習(xí)過(guò)程中接觸selenium,驚覺(jué)此包的強(qiáng)大之處,便對(duì)學(xué)習(xí)的知識(shí)做個(gè)記錄,方便日后需要時(shí)查看,同時(shí)也和讀者分享。文中表述如有錯(cuò)誤,敬請(qǐng)指正,感激不盡。 本文主要是對(duì)selenium的概要和一些基礎(chǔ)的用法。特此說(shuō)明:筆者學(xué)習(xí)的資料中

    2024年02月07日
    瀏覽(21)
  • 【Python爬蟲】Python爬蟲三大基礎(chǔ)模塊(urllib & BS4 & Selenium)

    【Python爬蟲】Python爬蟲三大基礎(chǔ)模塊(urllib & BS4 & Selenium)

    參考資料 Python爬蟲教程(從入門到精通) Python urllib | 菜鳥教程 Beautiful Soup 4 入門手冊(cè)_w3cschool Selenium入門指南 Selenium教程 什么是 Scrapy|極客教程 Scrapy入門教程 1、網(wǎng)絡(luò)爬蟲是什么? 我們所熟悉的一系列 搜索引擎都是大型的網(wǎng)絡(luò)爬蟲 ,比如百度、搜狗、360瀏覽器、谷歌搜索等

    2024年02月12日
    瀏覽(21)
  • Python爬蟲基礎(chǔ)(三):使用Selenium動(dòng)態(tài)加載網(wǎng)頁(yè)

    Python爬蟲基礎(chǔ)(三):使用Selenium動(dòng)態(tài)加載網(wǎng)頁(yè)

    Python爬蟲基礎(chǔ)(一):urllib庫(kù)的使用詳解 Python爬蟲基礎(chǔ)(二):使用xpath與jsonpath解析爬取的數(shù)據(jù) Python爬蟲基礎(chǔ)(三):使用Selenium動(dòng)態(tài)加載網(wǎng)頁(yè) Python爬蟲基礎(chǔ)(四):使用更方便的requests庫(kù) Python爬蟲基礎(chǔ)(五):使用scrapy框架 (1)Selenium是一個(gè)用于Web應(yīng)用程序測(cè)試的工具。

    2024年02月06日
    瀏覽(30)
  • Python爬蟲框架之Selenium庫(kù)入門:用Python實(shí)現(xiàn)網(wǎng)頁(yè)自動(dòng)化測(cè)試詳解

    Python爬蟲框架之Selenium庫(kù)入門:用Python實(shí)現(xiàn)網(wǎng)頁(yè)自動(dòng)化測(cè)試詳解

    是否還在為網(wǎng)頁(yè)測(cè)試而煩惱?是否還在為重復(fù)的點(diǎn)擊、等待而勞累?試試強(qiáng)大的 Selenium !讓你的網(wǎng)頁(yè)自動(dòng)化測(cè)試變得輕松有趣! Selenium 是一個(gè)強(qiáng)大的自動(dòng)化測(cè)試工具,它可以讓你直接操控瀏覽器,完成各種與網(wǎng)頁(yè)交互的任務(wù)。通過(guò)使用 Python 的 Selenium 庫(kù),你可以高效地實(shí)現(xiàn)

    2024年02月10日
    瀏覽(24)
  • 一天掌握python爬蟲【基礎(chǔ)篇】 涵蓋 requests、beautifulsoup、selenium

    一天掌握python爬蟲【基礎(chǔ)篇】 涵蓋 requests、beautifulsoup、selenium

    大家好,我是python222小鋒老師。前段時(shí)間卷了一套? Python3零基礎(chǔ)7天入門實(shí)戰(zhàn)? 以及1小時(shí)掌握Python操作Mysql數(shù)據(jù)庫(kù)之pymysql模塊技術(shù) 近日鋒哥又卷了一波課程,python爬蟲【基礎(chǔ)篇】 涵蓋 requests、beautifulsoup、selenium,文字版+視頻版。1天掌握。 視頻版教程:一天掌握python爬蟲【

    2024年02月07日
    瀏覽(70)
  • 編程小白的自學(xué)筆記十一(python爬蟲入門三Selenium的使用+實(shí)例詳解)

    編程小白的自學(xué)筆記十一(python爬蟲入門三Selenium的使用+實(shí)例詳解)

    編程小白的自學(xué)筆記十(python爬蟲入門二+實(shí)例代碼詳解 編程小白的自學(xué)筆記九(python爬蟲入門+代碼詳解)? 編程小白的自學(xué)筆記八(python中的多線程)? 編程小白的自學(xué)筆記七(python中類的繼承)? 目錄 系列文章目錄 文章目錄 前言 一、Selenium是什么 二、安裝Selenium ?三、

    2024年02月16日
    瀏覽(16)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包