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

Python學(xué)習(xí)之路-爬蟲提高:selenium

這篇具有很好參考價值的文章主要介紹了Python學(xué)習(xí)之路-爬蟲提高:selenium。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Python學(xué)習(xí)之路-爬蟲提高:selenium

什么是selenium

Selenium是一個Web的自動化測試工具,最初是為網(wǎng)站自動化測試而開發(fā)的,Selenium 可以直接運行在瀏覽器上,它支持所有主流的瀏覽器(包括PhantomJS這些無界面的瀏覽器),可以接收指令,讓瀏覽器自動加載頁面,獲取需要的數(shù)據(jù),甚至頁面截屏

PhantomJS的介紹

PhantomJS 是一個基于Webkit的“無界面”(headless)瀏覽器,它會把網(wǎng)站加載到內(nèi)存并執(zhí)行頁面上的 JavaScript

  • 下載地址:http://phantomjs.org/download.html

Chromedriver的介紹

Chromedriver 也是一個能夠被selenium驅(qū)動的瀏覽器,但是和PhantomJS的區(qū)別在于它是有界面的

  • 下載地址:https://npm.taobao.org/mirrors/chromedriver

driver的安裝

最簡單的安裝方式是:解壓后把bin目錄下的可執(zhí)行文件移動到環(huán)境變量下,比如/usr/bin 或者是/usr/local/bin下面

注意:Chromedriver和電腦上的chrome版本有對應(yīng)關(guān)系,建議使用最新的Chromedriver版本并且更新chrome瀏覽器到最新版

selenium的入門使用

  • 知識點:

    • 掌握如何發(fā)送請求,加載網(wǎng)頁
    • 掌握如何進(jìn)行簡單的元素定位
    • 掌握如何從獲取瀏覽器中的數(shù)據(jù)
  • 加載網(wǎng)頁: selenium通過控制瀏覽器,所以對應(yīng)的獲取的數(shù)據(jù)都是elements中的內(nèi)容

      from selenium import webdriver 
      driver = webdriver.PhantomJS(“c:/pantomjs.exe”)
      driver.get("http://www.baidu.com/")
      driver.save_screenshot("長城.png")
    
  • 定位和操作:

      driver.find_element_by_id(“kw”).send_keys(“長城”)
      driver.find_element_by_id("su").click()
    
  • 查看請求信息:

      driver.page_source
      driver.get_cookies()
      driver.current_url
    
  • 退出

      driver.close() #退出當(dāng)前頁面
      driver.quit()  #退出瀏覽器
    

selenium的定位操作

  • 知識點:

    • 掌握定位元素的方法
    • 掌握獲取元素中數(shù)據(jù)的方法
  • 定位元素語法:

      find_element_by_id (返回一個元素)
      find_elements_by_xpath (返回一個包含元素的列表)
      find_elements_by_link_text (根據(jù)連接文本獲取元素列表)
      find_elements_by_partial_link_text (根據(jù)連接包含的文本獲取元素列表)
      find_elements_by_tag_name (根據(jù)標(biāo)簽名獲取元素列表)
      find_elements_by_class_name (根據(jù)類名獲取元素列表)
    

    注意: find_elementfind_elements的區(qū)別 by_link_textby_partial_link_tex的區(qū)別:全部文本和包含某個文本

  • 使用:

    以豆瓣首頁為例:https://www.douban.com/

      from selenium import webdriver
    
      driver =webdriver.Chrome()
    
      driver.get("https://www.douban.com/")
    
      ret1 = driver.find_element_by_id("anony-nav")
      print(ret1)
      # 輸出為:<selenium.webdriver.remote.webelement.WebElement (session="ea6f94544ac3a56585b2638d352e97f3", element="0.5335773935305805-1")>
    
      ret2 = driver.find_elements_by_id("anony-nav")
      print(ret2)
      #輸出為:[<selenium.webdriver.remote.webelement.WebElement (session="ea6f94544ac3a56585b2638d352e97f3", element="0.5335773935305805-1")>]
    
      ret3 = driver.find_elements_by_xpath("http://*[@id='anony-nav']/h1/a")
      print(len(ret3))
       #輸出為:1
    
      ret4 = driver.find_elements_by_tag_name("h1")
      print(len(ret4))
       #輸出為:1
    
      ret5 = driver.find_elements_by_link_text("下載豆瓣 App")
      print(len(ret5))
       #輸出為:1
    
      ret6 = driver.find_elements_by_partial_link_text("豆瓣")
      print(len(ret6))
       #輸出為:28
    
      driver.close()
    
  • 獲取數(shù)據(jù)語法

    • find_element僅僅能夠獲取元素,不能顧直接獲取其中的數(shù)據(jù),find_element_by_xapth也是這樣
    • 獲取文本:element.text
    • 獲取屬性值:element.get_attribute("href")
  • 使用示例:

    from selenium import webdriver
    
    driver =webdriver.Chrome()
    
    driver.get("https://www.douban.com/")
    
    ret4 = driver.find_elements_by_tag_name("h1")
    print(ret4[0].text)
    #輸出:豆瓣
    
    ret5 = driver.find_elements_by_link_text("下載豆瓣 App")
    print(ret5[0].get_attribute("href"))
    #輸出:https://www.douban.com/doubanapp/app?channel=nimingye
    
    driver.close()
    

selenium 處理cookie

通過driver.get_cookies()能夠獲取所有的cookie

# 把cookie轉(zhuǎn)化為字典
{cookie[‘name’]: cookie[‘value’] for cookie in driver.get_cookies()}

#刪除一條cookie
driver.delete_cookie("CookieName")
# 刪除所有的cookie
driver.delete_all_cookies()

頁面等待

  • 為什么需要等待

    如果網(wǎng)站采用了動態(tài)html技術(shù),那么頁面上的部分元素出現(xiàn)時間便不能確定,這個時候就可以設(shè)置一個等待時間,強(qiáng)制要求在時間內(nèi)出現(xiàn),否則報錯

  • 頁面等待的方法 time.sleep(10)

使用selenium切換frame

frame是html中常用的一種技術(shù),即一個頁面中嵌套了另一個網(wǎng)頁,selenium默認(rèn)是訪問不了frame中的內(nèi)容的,對應(yīng)的解決思路是 driver.switch_to.frame()

動手:模擬登陸qq郵箱

在使用selenium登錄qq郵箱的過程中,我們會發(fā)現(xiàn),無法在郵箱的登錄input標(biāo)簽中輸入內(nèi)容,通過觀察源碼可以發(fā)現(xiàn),form表單在一個frame中,所以需要切換到frame中文章來源地址http://www.zghlxwxcb.cn/news/detail-829884.html

selenium的優(yōu)缺點

  • selenium能夠執(zhí)行頁面上的js,對于js渲染的數(shù)據(jù)和模擬登陸處理起來非常容易
  • selenium由于在獲取頁面的過程中會發(fā)送很多請求,所以效率非常低,所以在很多時候需要酌情使用

到了這里,關(guān)于Python學(xué)習(xí)之路-爬蟲提高:selenium的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 從零開始學(xué)習(xí)Python控制開源Selenium庫自動化瀏覽器操作,實現(xiàn)爬蟲,自動化測試等功能(一)

    從零開始學(xué)習(xí)Python控制開源Selenium庫自動化瀏覽器操作,實現(xiàn)爬蟲,自動化測試等功能(一)

    介紹Selenium : Selenium是一個用于自動化瀏覽器操作的開源工具和庫。它最初是為Web應(yīng)用測試而創(chuàng)建的,但隨著時間的推移,它被廣泛用于Web數(shù)據(jù)抓取和網(wǎng)頁自動化操作。Selenium 支持多種編程語言,包括Python,Java,C#等。 這里我們主要實現(xiàn)采用Python的方式 Selenium 的主要特點和

    2024年01月22日
    瀏覽(92)
  • Python多線程爬蟲為何效率低下?解析原因并提高爬蟲速度的方法

    線程(Thread)也叫輕量級進(jìn)程,是操作系統(tǒng)能夠進(jìn)行運算調(diào)度的最小單位,它被包含在進(jìn)程之中,是進(jìn)程中的實際運作單位。線程自己不擁有系統(tǒng)資源,只擁有一點在運行中必不可少的資源,但它可與同屬的一個進(jìn)程的其它線程共享進(jìn)程所擁有的全部資源。一個線程可以創(chuàng)建

    2024年02月01日
    瀏覽(20)
  • Python爬蟲基礎(chǔ)之Selenium詳解_python selenium

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

    from selenium import webdriver from selenium.webdriver.common.by import By browser= webdriver.Chrome() url = ‘https://www.baidu.com’ browser.get(url) button = browser.find_element(By.ID, ‘su’) print(button) button = browser.find_element(By.NAME, ‘wd’) print(button) button = browser.find_element(By.XPATH, ‘//input[@id=“su”]’) print(button)

    2024年04月15日
    瀏覽(22)
  • Python爬蟲之用Selenium做爬蟲

    Python爬蟲之用Selenium做爬蟲

    我們在用python做爬蟲的時候,除了直接用requests的架構(gòu),還有Scrapy、Selenium等方式可以使用,那么今天我們就來聊一聊使用Selenium如何實現(xiàn)爬蟲。 Selenium是什么? Selenium是一個瀏覽器自動化測試框架,是一款用于Web應(yīng)用程序測試的工具??蚣艿讓邮褂肑avaScript模擬真實用戶對瀏覽

    2024年02月13日
    瀏覽(22)
  • 【Selenium】提高測試&爬蟲效率:Selenium與多線程的完美結(jié)合

    【Selenium】提高測試&爬蟲效率:Selenium與多線程的完美結(jié)合

    使用 Selenium 創(chuàng)建多個瀏覽器,這在自動化操作中非常常見。 而在Python中,使用 Selenium + threading 或 Selenium + ThreadPoolExecutor 都是很好的實現(xiàn)方法。 應(yīng)用場景: 創(chuàng)建多個瀏覽器用于測試或者數(shù)據(jù)采集; 使用 Selenium 控制本地安裝的 chrome瀏覽器 去做一些操作 … 文章提供了 Selen

    2024年02月10日
    瀏覽(47)
  • python爬蟲——selenium

    python爬蟲——selenium

    目錄 一、背景?編輯 1.1、selenium的發(fā)展 1.2、在爬蟲中的應(yīng)用 1.3selenium執(zhí)行原理圖 1.4、WebDriver,與WebElement 二、準(zhǔn)備?編輯 2.1、下載驅(qū)動 2.2、安裝Selenium庫 2.3、簡單使用 三、實用操作?編輯 3.1、查找節(jié)點 3.1.1、查找元素在網(wǎng)頁中的位置(網(wǎng)址為www.baidu.com,代碼中的注釋很詳

    2024年02月09日
    瀏覽(21)
  • python selenium 爬蟲教程

    Python和Selenium是很強(qiáng)大的爬蟲工具,可以用于自動化地模擬瀏覽器行為,從網(wǎng)頁中提取數(shù)據(jù)。下面是一個簡單的使用Python和Selenium進(jìn)行爬蟲的案例。 1. 安裝和配置: 首先,你需要安裝Python和Selenium。可以使用pip命令來安裝Selenium庫: pip install selenium 。 然后,你還需要下載對應(yīng)

    2024年02月09日
    瀏覽(86)
  • python 配置 selenium爬蟲

    python 配置 selenium爬蟲

    這兩天學(xué)習(xí)Python爬蟲,記錄一下這個折磨我一兩個小時的配置。 值得注意的是,下載的chromedriver.exe文件必須放在和運行的.py文件同一目錄下,否則就會報錯: selenium.common.exceptions.WebDriverException: Message: ‘chromedriver’ executable needs to be in PATH. Please see https://chromedriver.chromium.or

    2024年02月03日
    瀏覽(24)
  • python爬蟲(selenium)

    目錄 準(zhǔn)備 體驗示例 創(chuàng)建瀏覽器驅(qū)動對象 訪問頁面 查找節(jié)點 節(jié)點交互 切換Frame 延時等待 前進(jìn)和后退 Cookies 選項卡管理 準(zhǔn)備 (1)瀏覽器驅(qū)動 :http://chromedriver.storage.googleapis.com/index.html (2)selenium第三方庫 :pip install selenium 注意: 瀏覽器驅(qū)動需要根據(jù)自身瀏覽器版本去下

    2024年02月03日
    瀏覽(28)
  • python爬蟲-Selenium

    python爬蟲-Selenium

    Selenium是一個用于Web應(yīng)用程序測試的工具,Selenium 測試直接運行在瀏覽器中,就像真正的用戶在操作一樣。模擬瀏覽器功能,自動執(zhí)行網(wǎng)頁中的js代碼,實現(xiàn)動態(tài)加載。 打開谷歌瀏覽器--右上角三個點--幫助--關(guān)于 下載地址:http://chromedriver.storage.googleapis.com/index.html 找到對應(yīng)瀏

    2024年02月09日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包