我知道find()命令只能找到第一個出現的數字,而find_all()可以找到所有的數字。有沒有一種方法可以找到一個特定的數字?
如果我想只找到前兩個出現的數字,是否有一個方法,或者需要在一個回圈中解決這個問題?
uj5u.com熱心網友回復:
你可以使用CSS選擇器知道你需要提取的子位置。讓我們假設你的HTML是這樣的:
<div id="id1"/span>>
<span>val1</span>
<span>val2</span>
<span>val2</span>
</div>
然后你可以通過以下方式選擇第一個元素:
child = div.select('span:nth-child(1)'/span>)
用你想要的數字替換1
如果你想選擇多個出現,你可以這樣串聯子句:如果你想選擇多個出現,你可以這樣串聯子句。
child = div.select('span:nth-child(1)'/span>) div.select('span:nth-child(2)')
獲得前兩個孩子
獲得前兩個孩子
nth-child選擇器也可以得到奇數的出現次數:
child = div.select('span:nth-child(2n 1)'/span>)
其中n從0開始:
n: 0 => 2n 1: 1
n: 1 => 2n 1: 3
..
在解決評論后進行了編輯,謝謝!
uj5u.com熱心網友回復:
如果你正在尋找前n個元素。
正如評論中指出的,你可以使用find_all來尋找所有的元素,然后用list slices選擇必要的數量。
soup.find_all(..)[:n] # get first n elements
或者更有效地,你可以使用limit引數的find_all來限制你想要的元素的數量。
soup.find_all(..., limit = n)
這樣做更有效率,因為它不需要在整個頁面中進行迭代。它在達到極限后停止執行。
更多內容請參考檔案。
如果你正在尋找n(th)元素。
在這種情況下,你可以使用css選擇器的:nth-child屬性:
soup.select_one('span:nth-child(n)'/span>)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/320229.html
標籤:
