嘍大家好,我是胖達。本期視頻來看看路徑相關的內容。我們知道在網頁中存在很多的圖片,如果把這些圖片和html文檔放在一起,這樣不光不美觀,管理起來也非常不方便。通常會新建一個專門用來管理圖像資源的文件夾,當需要查找圖像的時候就會選擇使用路徑的方式來指定圖像文件的位置。
路徑的類型又分為兩種,第一種是相對路徑,第二種是絕對路徑。今天先來了解一下相對路徑。相對路徑是相對于當前文件的位置來表示資源,也就是圖片位置的路徑表達方式。簡單來說就是圖片相對于當前html文檔的位置。這里把相對路徑的分類給大家列出來了,一個一個往下看。
·首先是同級路徑。同級路徑不需要在html里面寫任何符號,只需要將文件名寫到html屬性里就可以了。在代碼里看一下,這里有一個image,點jpg的圖片和html文檔處于同一級,所以在html的屬性里直接寫image,點jpg保存一下看看效果。
可以看到現在圖片是正常展示的,同級路徑下只需要在html屬性里完整填寫圖像文件的名稱就可以了。
·再來看第二個下級路徑。當圖像文件位于html文件下一集時,需要在html屬性里完整填寫同級文件夾的名稱,然后斜杠寫出對應圖片文件的名稱。
→首先打開資源文件夾,在這里新增一個images的文件夾。將image圖片文件復制一份放到images文件夾里。
→打開vscode,新建一個gtml文檔,這里新增一個image標簽。
→在左側資源管理器中剛剛新增的images文件夾已經顯示出來了,打開以后會發現里面有一個image,點jpg的圖片。把這個路徑寫一下,在src屬性里面寫入位于當前html文件同級的images文件夾的名稱,使用符號斜杠找到image,點gpg,看一下效果。此時圖片也完整顯示出來了。
→如果在amager四文件夾里還有一個amager四文件夾,下級路徑又該怎么寫?在amager文件夾里再新建一個文件夾,打開vscod,在左側的資源管理器中a major s文件夾下面又新增了一個a major s文件夾,在這里面又放了一張圖片。
這張圖片應該怎樣讓它展示出來?一起來看一下。
→首先找到同級的images文件夾,使用符號斜杠,此時vscode會提供給兩個選項,一個是imagers文件夾,另一個是imager.gpg。選擇imagers,imagers文件夾里面的imager.gpg的文件了,保存一下看看效果。
在瀏覽器中這兩張圖片都完美的展現出來了。
最后來看一下相對路徑里面的。上級路徑使用的符號是點點杠。上級路徑又應該怎么理解?也就是圖像文件是位于當前這個 hd ml文件的上一集。
在練習文件夾里新增一個名為 hd ml的文件夾,打開vs code,選擇剛剛新增的文件夾,選擇新建文件,這里需要新增一個 hd ml文檔。在當前 hd ml文檔中,如果想要調用上一級的 image 點 j p g 的圖片應該怎么做?在 sr c 屬性里面使用點點杠。
這里 vs code提供了上一集路徑中存在的文件,選擇 image 點 j p g,在瀏覽器中看下效果,此時圖片也是正常顯示的。如果hd ml文件藏得更深一些,把當前的文件復制一份,新增一個hd ml文件夾,將復制的文檔粘貼一下,打開剛剛復制的文檔,修改sr c屬性里面的值,使用點點杠。
此時是沒有找到 amage 點 j p g 的文件,這個時候就需要重復剛剛的操作,點點杠就能找到需要到的 amage 點 jbg 的文件了,保存一下看看效果。這里可以看到圖片還是正常顯示出來了。
本期視頻主要了解了相對路徑的三種分類,一個是同級路徑,一個是下級路徑,還有一個是上級路徑。希望小伙伴們下來可以好好練習一下,這對于后期的內容非常重要。下期再來聊聊絕對路徑。本期的內容到此結束,感謝觀看,下期再見。
天我們來聊聊網頁爬蟲中的一個核心技巧——精準定位網頁元素。掌握了這一招,你的數據爬取效率將大大提升。常用的有以下幾種:
以百度首頁為例:
先做好基礎工作
在網頁的海洋中,每個元素都有自己獨一無二的ID。通過元素的ID屬性,我們可以輕松找到它。在谷歌瀏覽器中打開目標網頁,檢查元素,復制其ID,然后使用爬蟲代碼中的 find_element_by_id 方法,傳入ID值,即可定位到該元素。例如,在百度首頁,我們可以通過ID定位到導航欄的文本數據,并打印輸出。
XPath是一種強大的定位工具,適用于復雜的網頁結構。通過復制元素的XPath表達式,我們可以在爬蟲代碼中使用 find_element_by_xpath 方法,精確地定位到元素,并提取所需數據。
如果你需要定位的是網頁中的鏈接,那么鏈接文本就是一個直觀的線索。使用 find_element_by_link_text 方法,傳入鏈接的完整文本,即可快速定位到鏈接元素。這里鏈接文本為“圖片”,可定位到他的網址(href),也可以用PARTIAL_LINK_TEXT,結果一樣的。
有時候,我們只需要找到頁面中所有特定標簽的元素。這時,我們可以使用 find_element_by_tag_name 方法,傳入標簽名,如"a",來獲取頁面中所有的超鏈接元素。這里默認返回第一個記錄,也可以返回全部到記錄,用find_elements。
CSS選擇器提供了一種更為靈活和強大的元素定位方式。通過結合標簽名、屬性名等CSS選擇器語法,我們可以精確地定位到唯一的元素。例如,使用 find_element_by_css_selector 方法,傳入"a.MNAV",可以精確地定位到特定的鏈接元素。
以上就是在網頁爬取過程中常用的幾種元素定位方法。每種方法都有其適用場景,收藏點個贊,有備無患,可以大大提高爬蟲的效率和準確性。
SS 中的 position 屬性只有幾個有效值,但這些值會導致無窮無盡的設計可能性,這使得學習位置相當困難。在本文中,我將分解每個位置值并解釋您需要了解的有關它們的所有信息。這甚至包括大多數文章/視頻忽略的與位置相關的更晦澀的概念。
首先,我們將介紹您可能從未聽說過但一直使用的最簡單的倉位值,這就是static倉位。static是 position 屬性的默認值,本質上只是意味著元素將遵循正常的文檔流并根據標準定位規則定位自身。
您未應用位置屬性的任何元素都將是static,這意味著您使用的大多數元素都是靜態定位的。static定位元素不能應用z-index、top、left、right或bottom屬性。
.one {
position: static;
}
下一個最簡單的倉位類型是relative倉位。位置元素的工作方式與位置relative完全相同static,但您現在可以向其添加z-index、top、left、right和bottom屬性。如果您在不設置任何這些額外屬性的情況下定位元素,您會注意到它看起來與定位元素relative完全相同。static這是因為relative定位元素也遵循正常的文檔流,但您可以使用top、left、right和bottom屬性來偏移它們。
.one {
position: relative;
}
?
.one {
position: relative;
top: 30px;
left: 10px;
}
從上面的示例中,您可以看到一個元素的工作方式就像static沒有定義額外的屬性時一樣。但是,一旦添加了left, 或之類的屬性top,您可以看到元素通過這些top, left,right和bottom屬性相對于其正常位置偏移了自身。但是,您會注意到,其他元素不會移動以說明relative定位元素的偏移位置。這是因為所有其他元素都假設relative定位元素沒有偏移,并且它們根據relative定位元素的位置來確定它們的位置,如果它是的話static。
現在在它自己的relative位置上并不是那么有用,因為您通常不想在不移動它周圍的所有元素的情況下偏移一個元素。位置的主要用例relative是設置z-index元素的,或者用作absolute定位元素的容器,我們將在下面討論。
該absolute位置是從正常文檔流中完全移除元素的第一個位置。如果您給一個元素位置,absolute所有其他元素將表現得好像absolute定位的元素甚至不存在。
.one {
position: absolute;
}
?
如您所見,元素二和三的布局就好像元素一從未存在過一樣。您還會注意到第一個元素不再填滿整個寬度。這是因為absolute定位元素的寬度默認為,auto而不是像 div 那樣全寬。此外,默認情況下,absolute定位元素會將自身放置在文檔中,如果它是靜態元素,它通常會呈現,但我們可以使用top、left、right和bottom屬性來更改它。
.one {
position: absolute;
top: 0;
left: 0;
}
現在您可以看到我們的元素已移動到虛線邊框的左上角。我使用這個虛線邊框來表示整個屏幕,因為默認情況下,位置absolute元素將相對于主體定位自身,因此 atop和left0 表示該元素將出現在主體的左上角。您可以absolute通過將其父元素之一的位置設置為 以外的任何值來更改定位元素所在的元素static。這是最常用的relative位置之一。
.purple-parent {
position: relative;
}
.one {
position: absolute;
top: 0;
left: 0;
}
?
通過將紫色父元素設置為的位置,relative我現在強制absolute定位的子元素位于父元素的左上角而不是主體。relative和位置的這種組合absolute非常普遍。
現在我們來到一個較少使用的位置,即fixed位置。fixedposition 有點像absoluteposition ,因為它從文檔流中移除元素,但是fixedposition 元素總是相對于屏幕定位,無論其父元素在什么位置。
.one {
position: fixed;
top: 0;
left: 0;
}
?
如您所見,我們的一個元素固定在頁面的左上角。您還會注意到,當您滾動頁面時,無論您滾動到哪里,它都會停留在頁面的左上角。fixed這是和之間的主要區別absolute。
最終位置值為sticky。這個位置是兩者的結合,fixed并且static結合了兩者的優點。具有位置的元素sticky將像static定位元素一樣工作,直到頁面滾動到元素碰到指定的top、left、right或bottom值的點。然后它將像一個固定位置的元素一樣,隨著頁面滾動,直到元素到達其容器的末尾。
.one {
position: sticky;
top: 10px;
}
首先,您會注意到 one 元素在文檔流中的正常位置,就好像它是static. 一旦將頁面滾動到一個元素的頂部距離頁面頂部 10px 的位置,它就會像位置一樣粘在頁面頂部fixed。這將一直持續到元素到達紫色父容器的底部,在這種情況下它將停止與頁面一起滾動。
stickyposition 是隨頁面滾動的導航欄、長列表中的標題以及許多其他用例的完美位置。
現在,您需要了解關于元素fixed和absolute位置元素的一件事,因為它可能會導致一些奇怪的、難以發現的錯誤。定位的元素absolute將使用第一個具有非靜態位置的父元素作為其容器來偏移自己,如果沒有父元素具有除 之外的位置值,它將默認為主體static。我們已經知道了,但這并不是定義父容器的唯一方法。absolute定位元素還將檢查設置了 、 或 屬性的transform父filter級perspective。如果在父級上找到其中任何一個,它將使用該父級作為容器。
.purple-parent {
transform: translateX(0);
}
.one {
position: absolute;
top: 0;
left: 0;
}
?
在上面的例子中,我們的紫色父元素有一個static位置,但由于它有一個transform集合,它充當我們absolute定位子元素的容器。
同樣的事情也適用于fixed位置元素。這也使得fixed位置元素的滾動行為不再起作用。
.purple-parent {
transform: translateX(0);
}
.one {
position: fixed;
top: 0;
left: 0;
}
即使我們滾動頁面,您也會注意到fixedposition 元素卡在紫色父容器中,因為它有一個transform屬性集。這通常不是您想要的,這就是為什么最好總是fixed在頂層定義位置元素以避免這種潛在的錯誤。
CSS 中的 position 屬性只有幾個值,但每個值在何時以及如何使用它方面都有很多細微差別。這會導致很多復雜性,但也有很多潛力。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。