Python網(wǎng)絡(luò )爬蟲(chóng)四大選擇器(正則表達式、BS4、Xpath、CSS)總結
優(yōu)采云 發(fā)布時(shí)間: 2020-05-12 08:01前幾天小編連續寫(xiě)了四篇關(guān)于Python選擇器的文章,分別用正則表達式、BeautifulSoup、Xpath、CSS選擇器分別抓取京東網(wǎng)的商品信息。今天小編來(lái)給你們總結一下這四個(gè)選擇器,讓你們愈發(fā)深刻的理解和熟悉Python選擇器。
一、正則表達式
正則表達式為我們提供了抓取數據的快捷方法。雖然該正則表達式更容易適應未來(lái)變化網(wǎng)絡(luò )爬蟲(chóng) 正則表達式,但又存在無(wú)法構造、可讀性差的問(wèn)題。當在爬京東網(wǎng)的時(shí)侯,正則表達式如下圖所示:
利用正則表達式實(shí)現對目標信息的精準采集
此外 ,我們都曉得,網(wǎng)頁(yè)經(jīng)常會(huì )形成變更,導致網(wǎng)頁(yè)中會(huì )發(fā)生一些微小的布局變化時(shí),此時(shí)也會(huì )促使之前寫(xiě)好的正則表達式未能滿(mǎn)足需求,而且還不太好調試。當須要匹配的內容有很多的時(shí)侯,使用正則表達式提取目標信息會(huì )導致程序運行的速率減緩,需要消耗更多顯存。
二、BeautifulSoup
BeautifulSoup是一個(gè)十分流行的 Pyhon 模塊。該模塊可以解析網(wǎng)頁(yè),并提供定位內容的方便插口。通過(guò)'pip install beautifulsoup4'就可以實(shí)現該模塊的安裝了。
利用美麗的湯去提取目標信息
使用 BeautifulSoup的第一步是將己下載的 HTML 內容解析為 soup文檔。由 于大多數網(wǎng)頁(yè)都不具備良好的HTML 格式,因此BeautifulSoup須要對實(shí)際格式進(jìn)行確定。BeautifulSoup才能正確解析缺位的冒號并閉合標簽,此外都會(huì )添加<html >和<body>標簽讓其成為完整的HTML文檔。通常使用find() 和find_all()方法來(lái)定位我們須要的元素。
如果你想了解BeautifulSoup全部方式和參數,可以查閱BeautifulSoup的官方文檔。雖然BeautifulSoup在代碼的理解上比正則表達式要復雜一些,但是其愈發(fā)容易構造和理解。
三、Lxml
Lxml模塊使用 C語(yǔ)言編撰,其解析速率比 BeautiflSoup更快,而且其安裝過(guò)程也更為復雜,在此小編就不贅言啦。XPath 使用路徑表達式在 XML 文檔中選定節點(diǎn)。節點(diǎn)是通過(guò)順著(zhù)路徑或則 step 來(lái)選定的。
Xpath選擇器
使用 lxml 模塊的第一步和BeautifulSoup一樣,也是將有可能不合法的HTML 解析為 統一格式。 雖然Lxml可以正確解析屬性?xún)蛇吶蔽坏拿疤柧W(wǎng)絡(luò )爬蟲(chóng) 正則表達式,并閉合標簽,不過(guò)該模塊沒(méi)有額外添加<html >和<body>標簽 。
在線(xiàn)復制Xpath表達式可以很方便的復制Xpath表達式。但是通過(guò)該方式得到的Xpath表達式置于程序中通常不能用,而且長(cháng)的無(wú)法看。所以Xpath表達式通常還是要自己親自上手。
四、CSS
CSS選擇器表示選擇元素所使用 的模式。BeautifulSoup整合了CSS選擇器的句型和自身便捷使用API。在網(wǎng)路爬蟲(chóng)的開(kāi)發(fā)過(guò)程中,對于熟悉CSS選擇器句型的人,使用CSS選擇器是個(gè)十分便捷的方式。
CSS選擇器
下面是一些常用的選擇器示例。