整合營銷服務商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          python爬蟲Selenium庫詳細教程

          我們爬取網(wǎng)頁過程中,經(jīng)常發(fā)現(xiàn)我們想要獲得的數(shù)據(jù)并不能簡單的通過解析HTML代碼獲取

          1. 使用示例

          2. 詳細介紹

          2.1 聲明瀏覽器對象

          2.2 訪問頁面

          2.3 查找元素

          2.3.1 單個元素

          下面是詳細的元素查找方法

          第二種:

          2.3.2 多個元素

          2.4 元素交互操作

          比如說在搜索框內(nèi)輸入文字:

          2.5 交互動作

          2.6 執(zhí)行JavaScript

          比如拖拽下拉

          2.7 獲取元素信息

          2.7.1 獲取屬性

          2.8 Frame

          2.9 等待

          2.9.1 隱式等待

          需要特別說明的是:

          2.9.2 顯式等待

          2.10 瀏覽器的前進/后退

          2.11 對Cookies進行操作

          2.12 選項卡管理

          就可以使用selenium來實現(xiàn)。

          文深入探討如何運用PHP高效獲取網(wǎng)頁HTML元素信息。

          運用文件讀取函數(shù),獲取網(wǎng)頁數(shù)據(jù)。

          利用PHP腳本的強大功能,網(wǎng)頁數(shù)據(jù)的采集中極為便捷,各類網(wǎng)頁元素亦可轉(zhuǎn)化為字符形式線上展現(xiàn)。

          2.使用正則表達式匹配目標元素

          面對諸多網(wǎng)頁需求,巧妙運用正則表達式可以精準且迅速搜尋并提取所需的HTML元素。核心技術(shù)在于結(jié)合正則表達式與網(wǎng)頁數(shù)據(jù),以實現(xiàn)精確篩選及獲取這些元素的目的。

          3.使用DOMDocument類解析網(wǎng)頁

          借助 DOMDocument 類,PHP 為我們提供了深入分析和處理網(wǎng)頁的途徑。該類功能強大且易用,尤其以其精準讀取 HTML 文檔樹及其靈活操作的表現(xiàn),在準確獲取所需元素方面具有顯著優(yōu)勢。

          4.使用Simple HTML DOM庫

          對于正則表達式和DOMDocument類的初學者而言,可能會遭遇困難。為提升工作效率,可嘗試借助于諸如Simple HTML DOM這類第三方工具。該工具能準確挖掘所需HTML元素,大幅縮減項目開發(fā)時間。

          5.使用XPath查詢語言

          憑借其卓越性能,XPath在應對XML及HTML文檔元素抽取任務中表現(xiàn)非凡,為我們提供了對HTML元素的精準與靈動操縱。

          6.使用cURL庫發(fā)送HTTP請求

          借助PHP中cURL庫的功能優(yōu)勢,我們能夠精確滿足各種網(wǎng)絡頁面內(nèi)容獲取和模擬仿真的需求,從而突出頁面關鍵信息的精度提取。

          7.處理JavaScript生成的內(nèi)容

          針對個性化需求,運用JavaScript也可實現(xiàn)網(wǎng)站內(nèi)容的動態(tài)生產(chǎn)。為高效達成此目的,我們能依賴于PHP所提供的兩種無頭瀏覽器工具包——Selenium以及PhantomJS。

          8.處理AJAX請求返回的數(shù)據(jù)

          為了實現(xiàn)在網(wǎng)頁間的數(shù)據(jù)交互和溝通,尤其是借助AJAX技術(shù)模擬網(wǎng)絡傳輸和數(shù)據(jù)獲取過程的各項操作,我們會充分利用PHP中獨有的CURL模塊和眾多第三方廠商開發(fā)的高效能庫,它們將會成為你處理海量信息的強大后盾。

          9.使用API接口獲取數(shù)據(jù)

          若目標網(wǎng)站具備API訪問許可,那么僅需根據(jù)接口文檔所指定的請求參數(shù),便可自動獲取并拆分JSON或者XML格式的回饋數(shù)據(jù),進而達到信息交換的目標。

          10.注意事項和其他方法

          在獲取網(wǎng)頁中的HTML元素時,需要注意以下幾點:

          -確保目標網(wǎng)頁存在且可訪問;

          -遵守目標網(wǎng)站的使用規(guī)則和法律法規(guī);

          -防止對目標網(wǎng)站造成過大的訪問壓力;

          -根據(jù)具體需求選擇合適的方法和工具。

          運用此策略,能精準提取所需HTML組件,為構(gòu)建多樣化應用及特性提供強大后盾。盼望本文能對您在PHP開發(fā)過程中網(wǎng)頁元素搜尋有所裨益。

          析動態(tài)內(nèi)容

          根據(jù)權(quán)威機構(gòu)發(fā)布的全球互聯(lián)網(wǎng)可訪問性審計報告,全球約有四分之三的網(wǎng)站其內(nèi)容或部分內(nèi)容是通過JavaScript動態(tài)生成的,這就意味著在瀏覽器窗口中“查看網(wǎng)頁源代碼”時無法在HTML代碼中找到這些內(nèi)容,也就是說我們之前用的抓取數(shù)據(jù)的方式無法正常運轉(zhuǎn)了。解決這樣的問題基本上有兩種方案,一是JavaScript逆向工程;另一種是渲染JavaScript獲得渲染后的內(nèi)容。

          JavaScript逆向工程

          下面我們以“360圖片”網(wǎng)站為例,說明什么是JavaScript逆向工程。其實所謂的JavaScript逆向工程就是找到通過Ajax技術(shù)動態(tài)獲取數(shù)據(jù)的接口。

          但是當我們在瀏覽器中通過右鍵菜單“顯示網(wǎng)頁源代碼”的時候,居然驚奇的發(fā)現(xiàn)頁面的HTML代碼中連一個<img>標簽都沒有,那么我們看到的圖片是怎么顯示出來的呢?原來所有的圖片都是通過JavaScript動態(tài)加載的,而在瀏覽器的“開發(fā)人員工具”的“網(wǎng)絡”中可以找到獲取這些圖片數(shù)據(jù)的網(wǎng)絡API接口,

          那么結(jié)論就很簡單了,只要我們找到了這些網(wǎng)絡API接口,那么就能通過這些接口獲取到數(shù)據(jù),當然實際開發(fā)的時候可能還要對這些接口的參數(shù)以及接口返回的數(shù)據(jù)進行分析,了解每個參數(shù)的意義以及返回的JSON數(shù)據(jù)的格式,這樣才能在我們的爬蟲中使用這些數(shù)據(jù)。

          關于如何從網(wǎng)絡API中獲取JSON格式的數(shù)據(jù)并提取出我們需要的內(nèi)容,在之前的《文件和異常》一文中已經(jīng)講解過了,這里不再進行贅述。

          使用Selenium

          盡管很多網(wǎng)站對自己的網(wǎng)絡API接口進行了保護,增加了獲取數(shù)據(jù)的難度,但是只要經(jīng)過足夠的努力,絕大多數(shù)還是可以被逆向工程的,但是在實際開發(fā)中,我們可以通過瀏覽器渲染引擎來避免這些繁瑣的工作,WebKit就是一個利用的渲染引擎。

          WebKit的代碼始于1998年的KHTML項目,當時它是Konqueror瀏覽器的渲染引擎。2001年,蘋果公司從這個項目的代碼中衍生出了WebKit并應用于Safari瀏覽器,早期的Chrome瀏覽器也使用了該內(nèi)核。在Python中,我們可以通過Qt框架獲得WebKit引擎并使用它來渲染頁面獲得動態(tài)內(nèi)容,關于這個內(nèi)容請大家自行閱讀《爬蟲技術(shù):動態(tài)頁面抓取超級指南》一文。

          如果沒有打算用上面所說的方式來渲染頁面并獲得動態(tài)內(nèi)容,其實還有一種替代方案就是使用自動化測試工具Selenium,它提供了瀏覽器自動化的API接口,這樣就可以通過操控瀏覽器來獲取動態(tài)內(nèi)容。首先可以使用pip來安裝Selenium。

          pip3 install selenium
          

          下面以“阿里V任務”的“直播服務”為例,來演示如何使用Selenium獲取到動態(tài)內(nèi)容并抓取主播圖片。

          import requests
          from bs4 import BeautifulSoup
          def main():
           resp = requests.get('https://v.taobao.com/v/content/live?catetype=704&from=taonvlang')
           soup = BeautifulSoup(resp.text, 'lxml')
           for img_tag in soup.select('img[src]'):
           print(img_tag.attrs['src'])
          if __name__ == '__main__':
           main()
          

          運行上面的程序會發(fā)現(xiàn)沒有任何的輸出,因為頁面的HTML代碼上根本找不到<img>標簽。接下來我們使用Selenium來獲取到頁面上的動態(tài)內(nèi)容,再提取主播圖片。

          from bs4 import BeautifulSoup
          from selenium import webdriver
          from selenium.webdriver.common.keys import Keys
          def main():
           driver = webdriver.Chrome()
           driver.get('https://v.taobao.com/v/content/live?catetype=704&from=taonvlang')
           soup = BeautifulSoup(driver.page_source, 'lxml')
           for img_tag in soup.body.select('img[src]'):
           print(img_tag.attrs['src'])
          if __name__ == '__main__':
           main()
          

          在上面的程序中,我們通過Selenium實現(xiàn)對Chrome瀏覽器的操控,如果要操控其他的瀏覽器,可以創(chuàng)對應的瀏覽器對象,例如Firefox、IE等。運行上面的程序,如果看到如下所示的錯誤提示,那是說明我們還沒有將Chrome瀏覽器的驅(qū)動添加到PATH環(huán)境變量中,也沒有在程序中指定Chrome瀏覽器驅(qū)動所在的位置。

          selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home
          

          為了解決上面的問題,可以到Selenium的官方網(wǎng)站找到瀏覽器驅(qū)動的下載鏈接并下載需要的驅(qū)動,在Linux或macOS系統(tǒng)下可以通過下面的命令來設置PATH環(huán)境變量,Windows下配置環(huán)境變量也非常簡單,不清楚的可以自行了解。

          export PATH=$PATH:/Users/Hao/Downloads/Tools/chromedriver/
          

          其中/Users/Hao/Downloads/Tools/chromedriver/就是chromedriver所在的路徑。


          主站蜘蛛池模板: 精品视频一区二区三区免费| 一区二区三区久久精品| 农村人乱弄一区二区| 精品一区二区三区在线观看l| 亚洲AV无码一区二区乱孑伦AS| 日本亚洲成高清一区二区三区| 人妻久久久一区二区三区| 69福利视频一区二区| 亚洲av无一区二区三区| 精品视频一区二区观看| 精品一区二区三区在线观看| 日本免费一区二区三区| 国产精品一区二区电影| 亚洲永久无码3D动漫一区| 一区二区不卡在线| 一区二区三区中文| 亚洲一区二区三区国产精品无码| 亚洲精品伦理熟女国产一区二区 | 搡老熟女老女人一区二区| 国产成人精品一区二区A片带套| 一区二区不卡视频在线观看| 日韩国产精品无码一区二区三区| 精品无码国产AV一区二区三区| 亚洲人成网站18禁止一区 | 无码少妇一区二区三区芒果| 成人精品视频一区二区三区| 国产精品久久一区二区三区| 久久久久久一区国产精品| 91精品乱码一区二区三区| 中文字幕一区日韩在线视频| 国产激情一区二区三区小说| 亚洲综合一区二区精品导航| 天天看高清无码一区二区三区 | 任你躁国语自产一区在| 福利一区二区视频| 亚洲日韩AV无码一区二区三区人 | 免费一区二区无码视频在线播放| 亚洲一区二区三区在线| 国产色综合一区二区三区| 色噜噜一区二区三区| 精品一区二区三区|