beautifulsoup是python的html/xml解析工具,其是python爬蟲重要的模組,解析效果很好,下面就開始學習beautifulsoup學習。
beautifulsoup在命令列模式下安裝:
pip install beautifulsoup #現在安裝的是beautifulsoup4
python可用的解析器如下:
python標準庫 beautifulsoup(markup, "html.parser") python的內建標準庫,執行速度適中,文件容錯能力強,python2的容錯能力差
lxml html 解析器 beautifulsoup(markup, "lxml") 速度快,文件容錯能力強 需要安裝c語言庫
lxml xml 解析器 beautifulsoup(markup, ["lxml", "xml"]) 速度快,唯一支援xml的解析器 需要安裝c語言庫
html5lib beautifulsoup(markup, "html5lib") 最好的容錯性,以瀏覽器的方式解析文件 生成html5格式的文件,速度慢,不依賴外部擴充套件
beautifulsoup使用:
import request
from bs4 import beautifulsoup
html = request.get(link,headers=headers)
soup = beautifulsoup(html,'lxml') #將網頁轉化為beautifulsoup自定義的物件型別
print(soup.prettify()) #以樹形結構按層次顯示html內容,便於閱讀
beautifulsoup提取物件可以分為三種方式:遍歷文件樹,搜尋文件樹,css選擇器
《一》遍歷文件樹
soup.tag: soup.header, soup.header.h1 #此種形式只找到第乙個匹配的tag,最後只給出一條結果
soup.header.div.contents #contents方法此時可以列出header下第乙個div標籤下的所有子節點列表(子節點在列表的奇數索引項中)
soup.header.div.children #children方法可以獲得節點下一級所有節點列表
soup.header.div.parent #parent方法可以獲得節點上一級單個節點,此處是header節點
soup.header.div.descendants #descendants方法可以獲得節點下的子子孫孫節點列表
soup.header.div.parents #parents方法可以獲得節點的所有祖先節點
soup.div['class'] #提取div標籤的class屬性
《二》搜尋文件樹
遍歷文件樹的方法只是根據標籤來找節點,大多數時候需要找某種屬性的特定標籤,此時需要根據標籤和屬性來查詢,稱為搜尋文件樹。
常用方法: fand和find_all
soup.find('tag',屬性='value'): soup.find('div',id='name') #搜尋id屬性為name的div標籤,只會給出第乙個符合條件的節點
soup.find_all('tag',屬性='value'): soup.find_all('div',id='name') #搜尋id屬性為name的div標籤,只會給出含有所有符合條件節點的列表
soup.find_all(re.compile('正則匹配內容')) #find()和find_all()可以和正規表示式一起使用,匹配tag標籤
《三》css選擇器
css選擇器既可以作為遍歷文件樹,也可以作為搜尋文件樹
soup.select('header h1') #查詢header標籤下的所有h1標籤
soup.select('header h1') #查詢header標籤下的直屬h1標籤
soup物件的方法
soup.get_text() #get_text()獲取文字內容
soup.name #tag標籤名稱
soup.next_sibling #soup物件的下乙個兄弟標籤
soup.previous_sibling #soup物件的上乙個兄弟標籤
soup.next_siblings #soup物件的後面所有兄弟標籤
soup.previous_siblings #soup物件的前面所有兄弟標籤
參考:
牛客網 引數解析
題目描述 在命令列輸入如下命令 xcopy s c d 各個引數如下 引數1 命令字xcopy 引數2 字串 s 引數3 字串c 引數4 字串d 請編寫乙個引數解析程式,實現將命令列各個引數解析出來。解析規則 引數分隔符為空格 對於用 包含起來的引數,如果中間有空格,不能解析為多個引數。比如在命令列...
csp官網題目 路徑解析
問題描述 在作業系統中,資料通常以檔案的形式儲存在檔案系統中。檔案系統一般採用層次化的組織形式,由目錄 或者資料夾 和檔案構成,形成一棵樹的形狀。檔案有內容,用於儲存資料。目錄是容器,可包含檔案或其他目錄。同乙個目錄下的所有檔案和目錄的名字各不相同,不同目錄下可以有名字相同的檔案或目錄。為了指定檔案...
03網頁解析器
網頁解析器 從網頁中提取有價值資料的工具,也會提取到網頁中所有的url,用於後續的訪問。python網頁解析器 1.正規表示式 最直觀,將網頁當作是乙個字串,進行模糊匹配但如果對於較為複雜的文件,會相當複雜 2.html.parser python自帶 3.beautifulsoup 第三方外掛程式...