python爬蟲-beautifulsoup匹配
阿新 • • 發佈:2018-12-21
一、beautifulsoup匹配
BeautifulSoup是Python的一個庫,最主要的功能就是從網頁匹配我們需要的資料。
BeautifulSoup將html解析為物件進行處理,全部頁面轉變為字典或者陣列,相對於正則表示式的方式,可以大大簡化處理過程。
安裝:pip3 install beautifulsoup4
Beautifulsoup和xpath的使用結構大同小異
1.beautifulsoup匹配步驟
匯入模組:from bs4 import BeautifulSoup
(1)構建beautifulsoup例項
# coding:utf-8 import requests from bs4 import BeautifulSoup html = ''' <html> <head> <title>test</title> </head> <body> <div> <ul> <li name="suner" class="one"><a>suner</a></li> <li name="wjk" class="two">wjk</li> <li name="wang" class="three">wang</li> <li name="karry" class="four">karry</li> </ul> </div> </body> </html> '''
soup = BeautifulSoup(html,"lxml")
① 第一個引數是要匹配的內容
② 第二個引數是beautifulsoup要採用的模組
# html.parser Python內建的結構匹配方法,但是效率不如lxml所以不常用
# lxml 使用 lxml模組
# xml 使用 xml模組
# html5lib 該模組可以將內容轉換HTML5物件
# 但是我們要想用以上功能就要具備對應模組,比如你用lxml就要安裝lxml
(2)查詢元素的值
在bs4當中有n多種匹配方法,但是最常用的是兩種
▲ find 查詢一次
① find查詢
|
<li class="one" name="suner"><a>suner</a></li> suner {'class': ['one'], 'name': 'suner'} |
② 通過屬性值查詢
|
<li class="two" name="wjk">wjk</li> |
③ select查詢
|
[<a>suner</a>] |
④ findall 查詢所有
|
---------------------- <li class="one" name="suner"><a>suner</a></li> suner {'class': ['one'], 'name': 'suner'} ---------------------- <li class="two" name="wjk">wjk</li> wjk {'class': ['two'], 'name': 'wjk'} ---------------------- <li class="three" name="wang">wang</li> wang {'class': ['three'], 'name': 'wang'} ---------------------- <li class="four" name="karry">karry</li> karry {'class': ['four'], 'name': 'karry'} |
⑤ soup本身返回
|
-------------- <title>test</title> -------------- <head> <title>test</title> </head> -------------- <li class="one" name="suner"><a>suner</a></li> |