Python 網路資料採集(二)

2021-09-02 10:44:13 字數 1648 閱讀 4797

使用beautifulsoup解析後的網頁通常是一種帶標籤的類文字形式,個人認為難點就是怎麼通過層層標籤的阻攔,抓取到目標內容。

findall (tag, attributes, recursive, text, limit, keywords)

find(tag, attributes, recursive, text, keywords)

標籤引數 tag ,可以傳乙個標籤的名稱或多個標籤名稱組成的 python 列表做標籤引數。例如,下面的**將返回乙個包含 html 文件中所有標題標籤的列表:findall()

屬性引數 attributes 是用乙個 python 字典封裝乙個標籤的若干屬性和對應的屬性值。例 如,下面這個函式會返回 html 文件裡紅色與綠色兩種顏色的 span 標籤:findall(「span」, })

遞迴引數 recursive 是乙個布林變數。你想抓取 html 文件標籤結構裡多少層的資訊?如果 recursive 設定為 true, findall 就會根據你的要求去查詢標籤引數的所有子標籤,以及子 標籤的子標籤。如果 recursive 設定為 false,findall 就只查詢文件的一級標籤。findall 預設是支援遞迴查詢的(recursive 預設值是 true);一般情況下這個引數不需要設定,除 非你真正了解自己需要哪些資訊,而且抓取速度非常重要,那時你可以設定遞迴引數.

文字引數 text 有點不同,它是用標籤的文字內容去匹配,而不是用標籤的屬性。假如我們 想查詢前面網頁中包含「the prince」內容的標籤數量,我們可以把之前的 findall 方法換 成下面的**:namelist = bsobj.findall(text=「the prince」)

範圍限制引數 limit,顯然只用於 findall 方法。find 其實等價於 findall 的 limit 等於 1 時的情形。如果你只對網頁中獲取的前 x 項結果感興趣,就可以設定它。但是要注意, 這個引數設定之後,獲得的前幾項結果是按照網頁上的順序排序的,未必是你想要的那 前幾項。

• beautifulsoup ,是 python 裡最受歡迎的 html 解析庫之一

• lxml 庫 ,可以用來解析 html 和 xml 文件,它在處理絕大多數 html 文件時速度都非常快。

• html parser ,python 自帶的解析庫

對於乙個標籤物件,可以用下面的**獲取它的全部屬性:mytag.attrs

要注意這行**返回的是乙個 python 字典物件,可以獲取和操作這些屬性。比如要獲取圖 片的資源位置 src,可以用下面這行**:myimgtag.attrs[「src」]

lambda 表示式本質上就是乙個函式,可以作為其他函式的變數使用;也就是說,乙個函 數不是定義成 f(x, y),而是定義成 f(g(x), y),或 f(g(x), h(x)) 的形式。例如,下面的**就是獲取有兩個屬性的標籤:soup.findall(lambda tag: len(tag.attrs) == 2)

3.beautifulsoup 允許我們把特定函式型別當作 findall 函式的引數。唯一的限制條件是這些 函式必須把乙個標籤作為引數且返回結果是布林型別。beautifulsoup 用這個函式來評估它 遇到的每個標籤物件,最後把評估結果為「真」的標籤保留,把其他標籤剔除。

Python網路資料採集

from urllib.request import urlopen from bs4 import beautifulsoup import re pages set defgetlinks pageurl global pages html urlopen pageurl bsobj beaut...

Python網路資料採集

本書適合熟悉python的程式設計師 安全專業人士 網路管理員閱讀。書中不僅介紹了網路資料採集的基本原理,還深入 了更高階的主題,比如分析原始資料 用網路爬蟲測試 等。此外,書中還提供了詳細的 示例,以幫助你更好地理解書中的內容。這本書中的工具和示例幫我輕鬆地將一些重複性工作自動化了,我可以將省下來...

Python網路資料採集 第二章

from urllib.request import urlopen from bs4 import beautifulsoup 2.1 我們可以抓出整個頁面,然後建立乙個beautifulsoup 物件 html urlopen bsopj beautifulsoup html 2.2.1 查詢 ...