做網(wǎng)站app需要多少錢(qián)百度推廣運(yùn)營(yíng)
目錄
- xpath變化的原因
- 1. 語(yǔ)言設(shè)置
- 2. 窗口大小
- n. 待添加~
- 總結(jié)
歡迎關(guān)注 『python爬蟲(chóng)』 專(zhuān)欄,持續(xù)更新中
歡迎關(guān)注 『python爬蟲(chóng)』 專(zhuān)欄,持續(xù)更新中
xpath變化的原因
XPath 可能會(huì)出現(xiàn)變化的原因有很多,以下是一些常見(jiàn)的情況:
-
網(wǎng)頁(yè)結(jié)構(gòu)變化:如果網(wǎng)頁(yè)的 HTML 結(jié)構(gòu)發(fā)生了變化,XPath 可能會(huì)隨之而變化。例如,元素的層級(jí)關(guān)系、屬性名稱(chēng)或值的變化都可能導(dǎo)致 XPath 發(fā)生改變。
-
動(dòng)態(tài)生成內(nèi)容:一些網(wǎng)頁(yè)使用 JavaScript 或 AJAX 技術(shù)來(lái)動(dòng)態(tài)加載內(nèi)容,這樣的頁(yè)面在不同時(shí)間點(diǎn)可能會(huì)呈現(xiàn)不同的 HTML 結(jié)構(gòu),導(dǎo)致 XPath 發(fā)生變化。
-
響應(yīng)式設(shè)計(jì):一些網(wǎng)站為了適配不同的設(shè)備和屏幕尺寸,會(huì)采用響應(yīng)式設(shè)計(jì),在不同的屏幕尺寸下展示不同的 HTML 結(jié)構(gòu),這也會(huì)導(dǎo)致 XPath 的變化。
-
版本更新:一些網(wǎng)站可能會(huì)不斷進(jìn)行版本更新,以改進(jìn)用戶(hù)體驗(yàn)或添加新功能,這也可能會(huì)導(dǎo)致 XPath 的變化。
-
數(shù)據(jù)庫(kù)內(nèi)容變化:如果網(wǎng)頁(yè)內(nèi)容是從數(shù)據(jù)庫(kù)中動(dòng)態(tài)獲取的,數(shù)據(jù)庫(kù)中數(shù)據(jù)的變化也可能會(huì)導(dǎo)致網(wǎng)頁(yè)結(jié)構(gòu)的變化,從而影響 XPath。
-
為應(yīng)對(duì)這些變化,當(dāng)編寫(xiě)爬蟲(chóng)或使用 XPath 時(shí),建議定期檢查網(wǎng)頁(yè)結(jié)構(gòu),避免硬編碼的 XPath,而是使用相對(duì)穩(wěn)定的定位方式,如基于 CSS 類(lèi)名或 ID 進(jìn)行定位,或者使用相對(duì)路徑來(lái)編寫(xiě) XPath,以減少受到變化的影響。
-
此文收集我自己遇到的奇葩具體情況,不一定所有網(wǎng)站都適用,用于排查一些奇葩網(wǎng)站.
1. 語(yǔ)言設(shè)置
有些網(wǎng)站的語(yǔ)言設(shè)置很奇怪.切換語(yǔ)言居然會(huì)改動(dòng)xpath
本地你瀏覽器訪問(wèn)是你設(shè)置過(guò)的cn中文,但是用谷歌打開(kāi)來(lái)的時(shí)候默認(rèn)是en英文,必要時(shí)在你的url中傳入 諸如"langue=cn"這種參數(shù),保證穩(wěn)定,或者你一開(kāi)始就在英文模式下設(shè)計(jì).
2. 窗口大小
有些奇葩網(wǎng)站有自適應(yīng),窗口大小會(huì)導(dǎo)致適用不同的網(wǎng)頁(yè)模板整個(gè)樣子會(huì)變化.
你用driver.get(‘url’)打開(kāi)網(wǎng)頁(yè)的時(shí)候的默認(rèn)窗口大小可能不同分辨率電腦不一樣,第一次打開(kāi)可以先用width = driver.execute_script("return document.body.clientWidth")
和height = driver.execute_script("return window.innerHeight")
得到默認(rèn)的寬度和高度.
from selenium import webdriver
from selenium.webdriver.chrome.options import Optionschrome_options = Options()# 創(chuàng)建 ChromeOptions 對(duì)象
# 啟動(dòng) Chrome 瀏覽器
driver = webdriver.Chrome(options=chrome_options)# 打開(kāi)登錄頁(yè)面
driver.get('url')
width = driver.execute_script("return document.body.clientWidth")
height = driver.execute_script("return window.innerHeight")
print("當(dāng)前窗口大小為:{}x{}".format(width, height))
driver.set_window_size(800,600)#不設(shè)置固定大小,可能會(huì)導(dǎo)致xpath變化
n. 待添加~
總結(jié)
大家喜歡的話,給個(gè)👍,點(diǎn)個(gè)關(guān)注!給大家分享更多計(jì)算機(jī)專(zhuān)業(yè)學(xué)生的求學(xué)之路!
版權(quán)聲明:
發(fā)現(xiàn)你走遠(yuǎn)了@mzh原創(chuàng)作品,轉(zhuǎn)載必須標(biāo)注原文鏈接
Copyright 2023 mzh
Crated:2023-3-1
歡迎關(guān)注 『python爬蟲(chóng)』 專(zhuān)欄,持續(xù)更新中
歡迎關(guān)注 『python爬蟲(chóng)』 專(zhuān)欄,持續(xù)更新中
『未完待續(xù)』