Python Beautiful Soup學習之HTML標簽補全功能


Beautiful Soup是一個非常流行的Python模塊。該模塊可以解析網頁,並提供定位內容的便捷接口。

使用下面兩個命令安裝:

pip install beautifulsoup4 或者 sudo apt-get install Python-bs4

如果想安裝最新的版本,請直接下載安裝包來手動安裝,也是十分方便的方法。

在這里我安裝的是 Beautiful Soup 4.5.1

下載完成之后把解壓包放到site-package目錄下,cd到解壓包中,運行下面的命令即可完成安裝:

sudo python setup.py install

然后需要安裝lxml:

sudo apt-get install Python-lxml

使用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')

得到結果:

后續將會把該內容應用到爬蟲中,對爬蟲得到的網頁進行解析。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM