1. 程式人生 > >Python爬蟲(4):Beautiful Soup的常用方法

Python爬蟲(4):Beautiful Soup的常用方法

Requests庫的用法大家肯定已經熟練掌握了,但是當我們使用Requests獲取到網頁的 HTML 程式碼資訊後,我們要怎樣才能抓取到我們想要的資訊呢?我相信大家肯定嘗試過很多辦法,比如字串的 find 方法,還有高階點的正則表示式。雖然正則可以匹配到我們需要的資訊,但是我相信大家在匹配某個字串一次一次嘗試著正則匹配的規則時,一定很鬱悶。

那麼,我們就會想有沒有方便點的工具呢。答案是肯定的,我們還有一個強大的工具,叫BeautifulSoup。有了它我們可以很方便地提取出HTMLXML標籤中的內容,這篇文章就讓我們瞭解下BeautifulSoup的常用方法吧。

什麼是BeautifulSoup?

Python的網頁解析可以用正則表示式去完成,那麼我們在寫的時候,要挨個的去把程式碼拿出來匹配,而且還要寫匹配的規則,整體實現起來就很複雜。BeautifulSoup呢,它是一個方便的網頁解析庫,處理高效,支援多種解析器。大部分情況下,利用它我們不在需要編寫正則表示式就可以方便的實現網頁資訊的提取。

官方文件

安裝:$ pip install beautifulsoup4

BeautifulSoup是一個網頁解析庫,它支援很多解析器,不過最主流的有兩個。一個是Python標準庫,一個是lxmlHTML 解析器。兩者的使用方法相似:

from bs4 import BeautifulSoup# Python的標準庫
BeautifulSoup(html, 'html.parser')# lxmlBeautifulSoup(html, 'lxml')

Python內建標準庫的執行速度一般,但是低版本的Python中,中文的容錯能力比較差。lxmlHTML 解析器的執行速度快,但是需要安裝 C語言的依賴庫。

lxml的安裝

由於lxml安裝需要依賴C語言庫,所以當lxmlWindows上安裝時,我們會發現各種奇怪的報錯,當然臉好的使用pip install lxml

安裝也是可以成功的。不過大部分人都是會倒在這裡。

這裡推薦大家使用lxml.whl檔案來安裝。首先我們需要安裝一下wheel庫,有了這個庫我們才可以正常安裝.whl

檔案。pip install wheel

從官方網站下載與系統,Python版本匹配的lxml檔案:地址

另外,不知道自己系統和python版本資訊的夥伴。需要進入系統管理員工具(CMD)或者python的 IDLE,輸入以下程式碼:

import pipprint(pip.pep425tags.get_supported())

這時我們就可以看到打印出來的Python版本資訊了。
下載好lxml的檔案後,我們需要找到檔案的位置,然後進入管理員工具,使用pip安裝:pip install whl檔案的全名

安裝完成後,可以進入Pythonimport一下,如果沒有報錯,那麼恭喜你安裝成功。
如果有的夥伴覺得麻煩,那我推薦大家安裝anaconda 下載地址(如果安裝速度慢,可以找國內映象),不知道是什麼的小夥伴可以谷歌一下,有了他,那些在windowspip安裝出錯的問題將不再存在。

BeautifulSoup的基本標籤選擇方法

雖然Python內建的標準庫解析器還不錯,但是我還是推薦大家使用lxml,因為它夠快。那麼後面的程式碼我們都是用lxml解析器來進行演示。
我們先匯入官方文件的例子:

html_doc = """<html><head><title>The Dormouse's story</title></head><body><p class="title"><b>The Dormouse's story</b></p><p class="story">Once upon a time there were three little sisters; and their names were<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;and they lived at the bottom of a well.</p><p class="story">...</p>"""

HTML 程式碼,我們能夠得到一個BeautifulSoup的物件,並能按照標準的縮排格式的結構輸出:

from bs4 import BeautifulSoupsoup = BeautifulSoup(html_doc, 'lxml')

我們可以看到上面的 HTML 程式碼並不完整,接下來我們使用prettify()方法來進行自動補全,註釋部分就是執行的輸出:

print(soup.prettify())# <html>#  <head>#   <title>#    The Dormouse's story#   </title>#  </head>#  <body>#   <p class="title">#    <b>#     The Dormouse's story#    </b>#   </p>#   <p class="story">#    Once upon a time there were three little sisters; and their names were#     Elsie#    </a>#    ,#     Lacie#    </a>#    and#     Tillie#    </a>#    ; and they lived at the bottom of a well.#   </p>#   <p class="story">#    ...#   </p>#  </body># </html>

獲取標籤

print(soup.title)# <title>The Dormouse's story</title>

通過輸出結果,我們可以看到獲取內容的屬性,實際上就是 HTML 程式碼裡的一個title標籤。

獲取名稱

print(soup.title.name)# 'title'

實際上就是標籤的名稱。

獲取屬性

print(soup.p.attrs['class'])# 'title'print(soup.p['class'])# 'title'

獲取標籤的屬性我們可以使用attrs方法,傳給他屬性名,就可以得到標籤的屬性。通過結果我們可以看到,直接傳給p標籤屬性名,一樣可以獲取到標籤屬性。

獲取內容

相關推薦

Python爬蟲(4):Beautiful Soup常用方法

Requests庫的用法大家肯定已經熟練掌握了,但是當我們使用Requests獲取到網頁的 HTML 程式碼資訊後,我們要怎樣才能抓取到我們想要的資訊呢?我相信大家肯定嘗試過很多辦法,比如字串的 find 方法,還有高階點的正則表示式。雖然正則可以匹配到我們需要的資訊,但是我相信大家在匹配某個字串一次一次嘗試

Python 爬蟲利器 Beautiful Soup 4 之文件樹的搜尋

前面兩篇介紹的是 Beautiful Soup 4 的基本物件型別和文件樹的遍歷, 本篇介紹 Beautiful Soup 4 的文件搜尋 搜尋文件樹主要使用兩個方法 find() 和 find_all() find_all(): find_all 是用於搜尋節

Python爬蟲Beautiful Soup解析庫的使用(五)

Python爬蟲之Beautiful Soup解析庫的使用 Beautiful Soup-介紹 Python第三方庫,用於從HTML或XML中提取資料官方:http://www.crummv.com/software/BeautifulSoup/ 安裝:pip install beautifulsoup4

python 爬蟲 封裝自己的常用方法

import urllib import urllib.request import ssl import re from collections import deque def writeFile2Strs(url,topath): with open(topath,"w") as f

python爬蟲入門--Beautiful Soup庫介紹及例項

整理自:北理工嵩天老師的網路課程。 1、Beautiful Soup庫基礎知識 (1)Beautiful Soup庫的理解 Beautiful Soup庫是解析、遍歷、維護“標籤樹”的功能庫。 BeautifulSoup對應一個HTML/XML文件的全部內容。

python爬蟲基礎:Beautiful Soup用法詳解

前言 說到爬蟲,我們不得不提起Beautiful Soup這個爬蟲利器,Beautiful Soup是一個可以從HTML或XML

python爬蟲Beautiful Soup基礎知識+例項

#python爬蟲之Beautiful Soup基礎知識 >Beautiful Soup是一個可以從HTML或XML檔案中提取資料的python庫。它能通過你喜歡的轉換器實現慣用的文件導航,查詢,修改文件的方式。 需要注意的是,Beautiful Soup已經自動將輸入文件轉換為Unicode編碼,輸出文

python下很帥氣的爬蟲包 - Beautiful Soup 示例

如何 lan linux下 csdn bottom 數量 ... 安裝包 一個 先發一下官方文檔地址。http://www.crummy.com/software/BeautifulSoup/bs4/doc/ 建議有時間可以看一下python包的文檔。 Beaut

【Python3 爬蟲學習筆記】解析庫的使用 4 —— Beautiful Soup 2

父節點和祖先節點 如果要獲取某個節點元素的父節點,可以呼叫parent屬性: html = """ <html> <head> <title>The Dormouse's story</title> </head> <

Python學習筆記——pycharm 爬蟲Beautiful soup

昨天看了看Beautiful soup,看的我真的是一臉懵逼,lxml的全忘光了,兩個光混淆。很難受 一、安裝 安裝Beautiful soup 和 lxml庫 二、基本用法 # 資料來源 html = ''' <html>

Python 字典的定義以及常用方法

name fault 1.8 python one 遍歷字典 end print [] 定義(字典的key必須是不可變類型,也成為可hash類型,並且字典是無序的): info={‘name‘:‘egon‘,‘age‘:18,‘sex‘:‘male‘} 或 info=di

python os.path模塊常用方法詳解

linu margin 作文 擴展 .py sans csv pytho 宋體 python os.path模塊常用方法詳解 轉發自:http://www.cnblogs.com/wuxie1989/p/5623435.html os.path模塊主要用於文件的

python爬蟲--解析網頁幾種方法之正則表達式

ima 3.5 ref string tex href quest user lin 1、正則表達式 正則表達式是一個特殊的字符序列,它能幫助你方便的檢查一個字符串是否與某種模式匹配。 re 模塊使 Python 語言擁有全部的正則表達式功能。 re.match函數 re.

python爬蟲--解析網頁幾種方法之BeautifulSoup

first div xml html find 抓取 XML 格式 速度慢 析取 一.解析器概述 soup=BeautifulSoup(response.body) 對網頁進行析取時,並未規定解析器,此時使用的是python內部默認的解析器“html.parser”

爬蟲突破封禁常用方法

好的 ip) mozilla like 源代碼 查看 驗證 需求 服務器 在互聯網上進行自動數據采集(抓取)這件事和互聯網存在的時間差不多一樣長。今天大眾好像更傾向於用“網絡數據采集”,有時會把網絡數據采集程序稱為網絡機器人(bots)。最常用的方法

python基礎---字符串常用方法匯總

join方法 blog git .... 連接 isspace [0 fill 小寫字母 s3 = ‘123‘s2 = ‘ ‘s1 = ‘This Is \t Cash‘s=‘abcdefghijklmnopqrstuvwxyz‘s4 = "0000000this is

python:os.path模塊常用方法

file doc pat rmp 1.5 com common path itext os.path模塊主要用於文件的屬性獲取,在編程中經常用到,以下是該模塊的幾種常用方法。更多的方法可以去查看官方文檔:http://docs.python.org/library/os.p

2018.03.26 Python-Pandas 字符串常用方法

末尾 OS std afr ext index bsp 3.2 data   import numpy as np  import pandas as pd 1 #字符串常用方法 - strip 2 s = pd.Series([‘ jack ‘,‘jill‘,‘ j

【Python3 爬蟲Beautiful Soup庫的使用

attrs mouse 爬蟲 image 結構 定義 正則表達式 ttr document 之前學習了正則表達式,但是發現如果用正則表達式寫網絡爬蟲,那是相當的復雜啊!於是就有了Beautiful Soup簡單來說,Beautiful Soup是python的一個庫,最主要

Python入門-字符串常用方法

div 簡單 world 入門 span pre hello 方法 pytho Python 字符串 字符串是 Python 中最常用的數據類型。我們可以使用引號(‘或")來創建字符串。 創建字符串很簡單,只要為變量分配一個值即可。 var1 = ‘Hello World