Beautiful Soup是一個很是流行的Python模塊。該模塊能夠解析網頁,並提供定位內容的便捷接口。html
使用下面兩個命令安裝:python
pip install beautifulsoup4
或者 sudo apt-get install Python-bs4
app
若是想安裝最新的版本,請直接下載安裝包來手動安裝,也是十分方便的方法。spa
在這裏我安裝的是 Beautiful Soup 4.5.13d
下載完成以後把解壓包放到site-package目錄下,cd到解壓包中,運行下面的命令便可完成安裝:code
sudo python setup.py installxml
而後須要安裝lxml:htm
sudo apt-get install Python-lxmlblog
使用Beautiful Soup的第一步是將已下載的HTML內容解析爲soup文檔
。
接口
因爲大多數網頁都不具有良好的HTML格式,所以Beautiful Soup須要對其實際格式進行肯定。
例如,在下面這個簡單網頁的列表中,存在屬性值兩側引號缺失和標籤未閉合的問題。
markup ="<b><!--Hey, buddy. Want to buy a used parser?--></b><p>fdsf"
咱們能夠看到P標籤未閉合。下面讓咱們看一下Beautiful Soup是如何處理的。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from bs4 import BeautifulSoup
markup ="<b><!--This will be used in the crawler--></b><p>It's wonderful"
tags = []
#soup = BeautifulSoup(markup,'html.parser')
#環境問題,可能報錯,暫時還沒搞懂html.parser和lxml的區別,後續跟進,若是報錯,就用下一行的代碼
soup = BeautifulSoup(markup,'lxml')
fixed_html = soup.prettify()
print fixed_html
結果以下:
咱們能夠看到不只<p>標籤補全完整,並且加入了<html>和<body>標籤,進行格式化的輸出。
下面咱們就能夠用findAll()方法查找咱們想要的標籤或者內容了。
咱們先打印看一下findAll()獲得的標籤都是什麼?
tags = []
tag = soup.findAll()
for sub in tag:
tags.append(sub.name)
print tags
執行結果以下:
咱們獲得了咱們所須要的標籤,而後咱們在findAll()中加入想查找的標籤。
例如:
sub = soup.findAll('p')
獲得結果:
後續將會把該內容應用到爬蟲中,對爬蟲獲得的網頁進行解析。