南京做中英文網(wǎng)站設(shè)計(jì)seosem是指什么意思
文章目錄
- Selenium與Requests對(duì)比
- 一、工作原理
- 二、功能特點(diǎn)
- 三、性能表現(xiàn)
- 下載對(duì)應(yīng)驅(qū)動(dòng)
- 1.首先我們需要打開edge瀏覽器,打開設(shè)置,找到“關(guān)于Microsoft Edge”,點(diǎn)擊進(jìn)入查看瀏覽器版本。
- 2.查找版本之后,搜索edge驅(qū)動(dòng)下載,進(jìn)入下載頁(yè)面,選擇對(duì)應(yīng)的版本下載就可以。
- 使用Selenium爬取腳本實(shí)例
- 1.導(dǎo)入必要的庫(kù)和模塊:
- 2.設(shè)置Edge瀏覽器的無(wú)頭模式:
- 3.初始化Edge WebDriver:
- 4.訪問網(wǎng)頁(yè):
- 5.等待頁(yè)面元素加載:
- 6.查找并遍歷列表元素:
- 7.關(guān)閉瀏覽器:
Selenium爬蟲與Requests在多個(gè)方面存在顯著差異,這些差異主要體現(xiàn)在它們的工作原理、功能特點(diǎn)、適用場(chǎng)景以及性能表現(xiàn)上。在某些情況下,我們使用Selenium爬取文本內(nèi)容更好,這里我們先將其與Requests進(jìn)行對(duì)比。
Selenium與Requests對(duì)比
一、工作原理
Requests:
- Requests是一個(gè)HTTP庫(kù),用于發(fā)送各種HTTP請(qǐng)求(如GET、POST等)。
- 它直接發(fā)送HTTP請(qǐng)求到服務(wù)器,并接收服務(wù)器的響應(yīng),不涉及瀏覽器環(huán)境的模擬。
Selenium: - Selenium是一個(gè)自動(dòng)化測(cè)試工具,通過控制瀏覽器來(lái)模擬用戶的各種行為,如點(diǎn)擊、滾動(dòng)、填寫表單等。
- 它通過瀏覽器驅(qū)動(dòng)程序與瀏覽器進(jìn)行交互。
二、功能特點(diǎn)
Requests:
- 簡(jiǎn)單、快速、輕量級(jí),易于使用和集成。
- 主要用于發(fā)送HTTP請(qǐng)求和接收響應(yīng),適用于靜態(tài)網(wǎng)頁(yè)內(nèi)容的抓取。
- 不具備瀏覽器自動(dòng)化功能。
Selenium:
- 功能強(qiáng)大,能夠模擬用戶與瀏覽器的所有交互行為。
- 適用于動(dòng)態(tài)網(wǎng)頁(yè)、單頁(yè)面應(yīng)用(SPA)以及需要用戶交互的網(wǎng)頁(yè)內(nèi)容的抓取。
三、性能表現(xiàn)
Requests:
- 由于不加載JavaScript或CSS等資源,響應(yīng)時(shí)間更短,資源消耗更少。
- 在處理靜態(tài)網(wǎng)頁(yè)內(nèi)容時(shí),性能表現(xiàn)優(yōu)異。
Selenium:
- 需要加載完整的頁(yè)面資源,因此速度相對(duì)較慢。
- 占用更多的CPU和內(nèi)存資源,特別是在處理多個(gè)瀏覽器實(shí)例或并發(fā)請(qǐng)求時(shí)。
綜上所述,Selenium爬蟲與Requests在多個(gè)方面存在顯著差異。選擇哪個(gè)工具取決于具體的項(xiàng)目需求、網(wǎng)頁(yè)類型以及性能要求。對(duì)于簡(jiǎn)單的靜態(tài)網(wǎng)頁(yè)內(nèi)容抓取,Requests可能是更合適的選擇;而對(duì)于復(fù)雜的動(dòng)態(tài)網(wǎng)頁(yè)、需要用戶交互的網(wǎng)頁(yè)或Web應(yīng)用程序的抓取,Selenium則更具優(yōu)勢(shì)。
下載對(duì)應(yīng)驅(qū)動(dòng)
在使用Selenium之前,我們需要先下載對(duì)應(yīng)瀏覽器的驅(qū)動(dòng)程序(如 Edge 驅(qū)動(dòng)程序)來(lái)與瀏覽器進(jìn)行交互。下面我們講解如何安裝驅(qū)動(dòng)。
1.首先我們需要打開edge瀏覽器,打開設(shè)置,找到“關(guān)于Microsoft Edge”,點(diǎn)擊進(jìn)入查看瀏覽器版本。
圖例:
2.查找版本之后,搜索edge驅(qū)動(dòng)下載,進(jìn)入下載頁(yè)面,選擇對(duì)應(yīng)的版本下載就可以。
圖例:
下載完成之后,將文件放在含有python的文件夾內(nèi)(注意一定要放在一個(gè)文件夾下),這樣我們就可以使用Selenium爬取腳本了。
使用Selenium爬取腳本實(shí)例
下面我們使用Selenium庫(kù)和Edge瀏覽器(通過Edge WebDriver)來(lái)自動(dòng)化訪問網(wǎng)頁(yè)并抓取數(shù)據(jù)的Python腳本。
1.導(dǎo)入必要的庫(kù)和模塊:
import time# pip install selenium
# 下載對(duì)應(yīng)版本的驅(qū)動(dòng) 放在python文件下from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.edge.options import Options
- time:用于在代碼執(zhí)行過程中添加延時(shí)。
- webdriver從selenium包中導(dǎo)入,用于控制瀏覽器。
- By從selenium.webdriver.common.by中導(dǎo)入,用于指定元素定位的方式(如XPath、CSS選擇器等)。
- expected_conditions(別名EC)和WebDriverWait從selenium.webdriver.support和selenium.webdriver.support.ui中導(dǎo)入,用于設(shè)置等待條件,以便在元素可用之前暫停執(zhí)行。
- Options從selenium.webdriver.edge.options中導(dǎo)入,用于配置Edge瀏覽器的啟動(dòng)選項(xiàng),如設(shè)置為無(wú)頭模式。
2.設(shè)置Edge瀏覽器的無(wú)頭模式:
if __name__ == '__main__':# 無(wú)頭模式opt = Options()opt.add_argument("--headless")
- 創(chuàng)建Options實(shí)例,并通過add_argument(“–headless”)設(shè)置瀏覽器在無(wú)頭模式下運(yùn)行,即不顯示瀏覽器界面。
3.初始化Edge WebDriver:
driver = webdriver.Edge(options=opt)
- 使用webdriver.Edge(options=opt)創(chuàng)建Edge WebDriver實(shí)例,傳入之前配置的選項(xiàng)opt。
4.訪問網(wǎng)頁(yè):
# 請(qǐng)求頁(yè)面driver.get('https://101.qq.com/#/hero')
- 使用driver.get(‘https://101.qq.com/#/hero’)訪問指定的網(wǎng)頁(yè)地址。
5.等待頁(yè)面元素加載:
# 強(qiáng)制等待time.sleep(10)# 等待某個(gè)元素加載完成WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH,"//ul[@class='hero-list']")))
- 使用WebDriverWait和EC.presence_of_element_located等待頁(yè)面上某個(gè)元素(這里是類名為hero-list的ul元素)出現(xiàn)。這是一種比time.sleep()更智能的等待方式,因?yàn)樗鼤?huì)等待直到條件滿足(元素出現(xiàn))或達(dá)到最大等待時(shí)間(這里是10秒)。
6.查找并遍歷列表元素:
li_list = driver.find_elements(By.XPATH,"//ul[@class='hero-list']/li")for li in li_list:img_url = li.find_element(By.XPATH,"div/div/img").get_attribute("src")hero_name = li.find_element(By.XPATH,"div/p").textprint(img_url,hero_name)
- 使用find_elements方法通過XPath定位到ul[@class=‘hero-list’]下的所有l(wèi)i元素,并將它們存儲(chǔ)在li_list列表中。
- 遍歷li_list中的每個(gè)li元素,對(duì)于每個(gè)元素:
- 使用find_element和XPath定位到該li元素內(nèi)的img標(biāo)簽,并獲取其src屬性(即圖片URL)。
- 同樣地,定位到該li元素內(nèi)的p標(biāo)簽,并獲取其文本內(nèi)容(即英雄名稱)。
- 打印出圖片URL和英雄名稱。
7.關(guān)閉瀏覽器:
driver.close()pass
- 使用driver.close()關(guān)閉瀏覽器。
這段代碼演示了如何使用Selenium和Edge WebDriver來(lái)自動(dòng)化訪問一個(gè)網(wǎng)頁(yè),等待頁(yè)面上的特定元素加載完成,然后抓取該頁(yè)面上特定列表項(xiàng)中的圖片URL和文本內(nèi)容。