1. 程式人生 > >使用BeautifulSoup解析html入門

使用BeautifulSoup解析html入門

 最近一直需要接觸爬蟲,爬蟲得到的頁面資料需要進一步的處理才能夠轉化為我們可以使用的資料,在這裡今天學習的是BeautifulSoup這個python的第三方的庫,這是一款很優秀的產品,可以很好地處理html檔案,網上一搜一大堆的資源,今天的學習內容主要是依據網上一篇超級詳細的入門教程來進行實驗的,不得不說裡面的內容真的好多,一時半會也不能全部都理解,在這裡先記錄一下今晚的學習成果,接下來有時間繼續學習。

    接下來給出自己的程式碼,小指令碼,對百度頁面原始碼進行了操作:

#!/usr/bin/python
#-*-coding:utf-8-*-

import urllib
from bs4 import BeautifulSoup

def bs_test():
    url = 'http://www.baidu.com'
    html = urllib.urlopen(url).read()
    print '百度頁面html長度為:', len(html)
    #建立beautifulsoup物件
    soup = BeautifulSoup(html)
    #這個小函式可以格式化輸出soup物件
    print soup.prettify()
    '''
    Beautiful Soup將複雜HTML文件轉換成一個複雜的樹形結構,每個節點都是Python物件,所有物件可以歸納為4種:
    Tag、NavigableString、BeautifulSoup、Comment
    '''
    #Tag,tag就是爬取得到的html原始碼中的一個一個的標籤,Tag,它有兩個重要的屬性,是 name 和 attrs
    print soup.title   #輸出<title>標籤
    print len(soup.title)
    print soup.head    #輸出<head>標籤
    print len(soup.head)
    print soup.a       #輸出<a>標籤
    print len(soup.a)
    print type(soup.a) #輸出<a>標籤的型別
    print soup.p       #輸出<p>標籤
    print soup.p.attrs #把 p 標籤的所有屬性列印輸出
    print soup.name
    print soup.head.name
    #NavigableString
    print soup.p.string  #用.string方法獲取標籤裡面的內容
    print type(soup.p.string)   #判斷型別輸出
    #BeautifulSoup物件表示的是一個文件的全部內容
    print type(soup.name)    #獲取soup名字的型別
    print soup.name
    print soup.attrs
    #Comment 物件是一個特殊型別的 NavigableString 物件,其實輸出的內容仍然不包括註釋符號
    print soup.a
    print soup.a.string
    print type(soup.a.string)
    #熟悉.contents.children屬性,tag 的 .content 屬性可以將tag的子節點以列表的方式輸出
    print soup.head.contents 
    print soup.head.children
    #.contents 和 .children 屬性僅包含tag的直接子節點,.descendants 屬性可以對所有tag的子孫節點進行遞迴迴圈
    for child in soup.descendants:
        print child
    #.strings獲取多個內容,不過需要遍歷獲取
    for string in soup.strings:
    	print(repr(string))
    #.stripped_strings輸出的字串中可能包含了很多空格或空行,使用 .stripped_strings 可以去除多餘空白內容
    for string in soup.stripped_strings:
    	print(repr(string))
    # .parent 屬性
    print soup.p.parent.name
    #.next_sibling .previous_sibling 屬性
    for sibling in soup.a.next_siblings:
    	print(repr(sibling))
    #.next_element .previous_element 屬性,輸出當前節點前一個節點或者下一個節點
    print soup.head.next_element
    #搜尋文件樹find_all( name , attrs , recursive , text , **kwargs )find_all() 方法搜尋當前tag的所有tag子節點,並判斷是否符合過濾器的條件
    print soup.find_all(['a','b'])  #查詢所有的a標籤
    soup.find_all("a", limit=2)    #可以限制返回的數量


bs_test()

結果很大就不粘貼出來了,實際用的時候可以自己設定一個小點的html來進行實驗,今天對bs4的初步學習就這些,還是剛剛入門的階段,接下來還有很多很多需要學習的地方,歡迎有興趣的同學一起來交流學習哈。

相關推薦

使用BeautifulSoup解析html入門

 最近一直需要接觸爬蟲,爬蟲得到的頁面資料需要進一步的處理才能夠轉化為我們可以使用的資料,在這裡今天學習的是BeautifulSoup這個python的第三方的庫,這是一款很優秀的產品,可以很好地處理html檔案,網上一搜一大堆的資源,今天的學習內容主要是依據網上一篇超級詳

Python3.x的BeautifulSoup解析html常用函數

head .text software 20M 轉碼 second dal 列表 條件 Python3.x的BeautifulSoup解析html常用函數 1,初始化: soup = BeautifulSoup(html) # html為html源代碼字符串,type(h

使用BeautifulSoup解析HTML

from bs4 import BeautifulSoup import requests req = requests.get('http://www.iqiyi.com/') ret = req.content.decode('utf-8') # print(ret) # 使用Beautifu

beautifulsoup 解析html方法

用BeautifulSoup 解析html和xml字串 物件引數說明 例項: #!/usr/bin/python # -*- coding: UTF-8 -*- from bs4 import BeautifulSoup import re #待分析字串 html_doc = """

python爬蟲學習筆記-使用BeautifulSoup解析html

之前抓取豆瓣圖書Top250的時候,獲取內容使用的方法是正則表示式匹配,看上去是一種比較簡潔的方法,但問題在於,正則表示式的編寫必須非常細心,一旦出了任何小問題,就會導致得不到想要的結果。熟悉html的話,不難想到可以利用節點之間的結構和層級關係來作區分並進一步獲取節點內想要的文字。 於是B

python 極好用的解析 html 標簽的模塊 - BeautifulSoup

圖片 baidu base ... value data 取反 lin tex   記錄下各種使用姿態   測試的 html 代碼: <html> <head> <title>Test</t

Java爬蟲入門簡介(三) —— Jsoup解析HTML頁面

上一篇部落格我們已經介紹瞭如何使用HttpClient模擬客戶端請求頁面了。這一篇部落格我們將描述如何解析獲取到的頁面內容。上一節我們獲取了 http://www.datalearner.com/blog_list 頁面的HTML原始碼,但是這些原始碼是提供給瀏覽器解析用的,

通過使用jsoup解析html,繪畫表格生成execl文件

num group wid 字符 for format 格式 colspan tables 1.獲取文件或者字符設置繪畫表格字符編碼 //得到Document並且設置編碼格式 public static Document getDoc(String fileNam

python 解析html網頁

class find() [] index file 字符 .com 查找 cto pyquery庫是jQuery的Python實現,可以用於解析HTML網頁內容,使用方法: 代碼如下: from pyquery import PyQuery as pq 1、可加載一段H

Android解析HTML網頁數據 第一個方法Jsoup(一)

原生 日誌 href attr mage connect auto htm baidu 最近發現一些無聊的東西,就是抓取網頁上的數據,然後使用安卓原生代碼顯示出來,或者說借用網頁數據,用自定義的View顯示。 借助jsoup-1.10.2.jar庫,獲取並解析數據。(Jso

html入門

thml html入門 超文本 語言 體會 css 文本 自己的 nbsp 學習THML一周了,真心體會到師傅帶進門,修行看個人。 學習是自己的事,自己的是自己做,貌似我小學就懂得了這個道理,學習了一周,感覺自己沒學到啥,所以看來還得加倍努力才行呀! html也就是超文本標

Java學習:HTML入門

網頁 重置 自我介紹 回滾 標簽 color 公式 target coord HTML HTML基本標簽 <html> --html開始標簽 <head> -- 文件頭(用戶在瀏覽器的主體是看不到的) </head> <bo

jericho解析html

jericho解析html1.導入jar包2.實現源代碼package com.zhishang.lucene; import net.htmlparser.jericho.Element; import net.htmlparser.jericho.HTMLElementName; import net.

使用C#和HtmlAgilityPack解析HTML

load() 需要 有一個 Coding -c href .net tar doc   近期,有一個需求,需要解析HTML頁面,讀取一些需要的數據後,插入本地數據庫。我知道可以通過正則表達式實現,然而正則表達式之於我,就像匯編語言之於我,一樣。我知道它是幹什麽的,我也知道它

Beautiful Soup 解析html表格示例

decode rip erro bs4 import bsp exe port pdf from bs4 import BeautifulSoup import urllib.request doc = urllib.request.urlopen(‘http://www

php解析html類庫simple_html_dom

響應 過多 echo 記得 正則 下載 int curl sse 下載地址:https://github.com/samacs/simple_html_dom解析器不僅僅只是幫助我們驗證html文檔;更能解析不符合W3C標準的html文檔。它使用了類似jQuery的元素選擇

關於瀏覽器解析html全過程詳解

col 頁面 def 動態 lib href web 圖片 使用 本人web前端菜鳥一枚,第一次在這裏發博客梳理知識,知識都是從各地方查閱引用以及自己的理解得來,有什麽錯誤的地方歡迎指正。 DOM文檔通常加載的步驟: 1.解析HTML結構。 2.加載外部腳本和樣式表文

Java解析html頁面,獲取想要的元素

parse tails src www 標準 pro 1.8 com 9.png 背景:通過接口訪問數據,獲取的內容是個標準的html格式,使用jsoup的方式獲取頁面元素值 先推薦比較好的博客:http://www.open-open.com/jsoup/、 單個案例比較

HTML入門(三)後臺系統顯示頁面_框架標簽

row http head span 技術分享 target html top logs <!DOCTYPE html> <html> <head> <meta charset="UTF-8">

Python爬蟲系列(四):Beautiful Soup解析HTML之把HTML轉成Python對象

調用 nor 結束 版本 現在 name屬性 data 官方文檔 get 在前幾篇文章,我們學會了如何獲取html文檔內容,就是從url下載網頁。今天開始,我們將討論如何將html轉成python對象,用python代碼對文檔進行分析。 (牛小妹在學校折騰了好幾天,也沒把h