您好,登錄后才能下訂單哦!
如果你在學校讀的是計算機科學專業,那么可能學過 Lambda 表達式, 不過可能從來沒有用過它。如果你不是計算機科學專業,它們看著可能 有點兒陌生(或者只是“曾經學習過的東西”)。在這一節里,雖然我們 不打算深入學習這類函數,但是會用幾個例子來演示它們是如何用在網 頁抓取中的。
Lambda 表達式本質上就是一個函數,可以作為變量傳入另一個函數; 也就是說,一個函數不是定義成 f(x, y),而是可以定義成 f(g(x), y) 或 f(g(x), h(y)) 的形式。 BeautifulSoup 允許我們把特定類型的函數作為參數傳入 find_all 函 數。唯一的限制條件是這些函數必須把一個標簽對象作為參數并且返回 布爾類型的結果。BeautifulSoup 用這個函數來評估它遇到的每個標簽對 象,最后把評估結果為“真”的標簽保留,把其他標簽剔除。
例如,下面的代碼就是獲取有兩個屬性的所有標簽:
bs.find_all(lambda tag: len(tag.attrs) == 2)
這里,作為參數傳入的函數是 len(tag.attrs) == 2。當該參數為真 時,find_all 函數將返回 tag。即找出帶有兩個屬性的所有標簽,如 下所示:
<div class="body" id="content"></div> <span class="title"></span>
Lambda 函數非常實用,你甚至可以用它來替代現有的 BeautifulSoup 函 數:
bs.find_all(lambda tag: tag.get_text() == 'Or maybe he\'s only resting?')
如果不使用 Lambda 函數,代碼如下:
bs.find_all('', text='Or maybe he\'s only resting?')
如果你能記住 Lambda 函數的語法,以及如何獲取標簽的屬性,那么你 可能再也不需要記住 BeautifulSoup 的語法了!
由于 Lambda 函數可以是任意返回 True 或者 False 值的函數,你甚至 可以結合使用 Lambda 函數與正則表達式,來查找匹配特定字符串模式 的屬性的標簽。
以上就是關于python Lambda表達式的相關知識點內容,感謝大家的閱讀和對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。