最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中使用HTMLParser解析html實例

 更新時間:2015年02月08日 09:35:18   投稿:junjie  
這篇文章主要介紹了Python中使用HTMLParser解析html實例,本文直接給出使用示例,并總結出HTMLParser含有的方法分為兩類,一類是需要顯式調(diào)用的,而另一類不需顯示調(diào)用,需要的朋友可以參考下

前幾天遇到一個問題,需要把網(wǎng)頁中的一部分內(nèi)容挑出來,于是找到了urllib和HTMLParser兩個庫.urllib可以將網(wǎng)頁爬下來,然后交由HTMLParser解析,初次使用這個庫,在查官方文檔時也遇到了一些問題,在這里寫下來與大家分享.

一個例子

復制代碼 代碼如下:

from HTMLParser import HTMLParser
class MyHTMLParser(HTMLParser):
  def handle_starttag(self, tag, attrs):
    print "a start tag:",tag,self.getpos()
parser=MyHTMLParser()
parser.feed('<div><p>"hello"</p></div>')

這個例子里HTMLParser是基類,重載了他的handle_starttag方法,輸出了一些信息.parser是MyHTMLParser的實例,調(diào)用feed方法開始解析函數(shù).值得注意的是,不需要顯示調(diào)用handle_starttag方法就會執(zhí)行.

HTMLParser方法的調(diào)用方式困惑了我很長時間,看了很多博文才恍然大悟,HTMLParser含有的方法分為兩類,一類是需要顯式調(diào)用的,而另一類不需顯示調(diào)用.

不需顯式調(diào)用的方法

下面的這些函數(shù)在解析的過程中會觸發(fā),但是默認情況下不會產(chǎn)生任何副作用,因而我們要根據(jù)自己的需求重載.

1.HTMLParser.handle_starttag(tag,attrs): 解析時遇到開始標簽調(diào)用,如<p class='para'>,參數(shù)tag是標簽名,這里是'p',attrs為標簽所有屬性(name,value)列表,這里是[('class','para')]

2.HTMLParser.handle_endtag(tag): 遇到結束標簽時調(diào)用,tag是標簽名

3.HTMLPars.handle_data(data): 遇到標簽中間的內(nèi)容時調(diào)用,如<style> p {color: blue; }</style>,參數(shù)data為開閉標簽間的內(nèi)容.值得注意的是在形如<div><p>...</p></div>的位置,并不會在div處調(diào)用,而是只在p處調(diào)用

當然還有其他函數(shù),這里不做介紹

顯式調(diào)用的方法

1.HTMLParser.feed(data): 參數(shù)為需要解析的html字符串,調(diào)用后字符串開始被解析

2.HTMLParser.getpos(): 返回當前的行號和偏移位置,如(23,5)

3.HTMLParser.get_starttag_text(): 返回當前位置最近的開始標簽的內(nèi)容

所有的內(nèi)容寫完了,最后還有一點注意事項,HTMLParser只是一個簡單的模塊,解析html的功能并不完善,例如不能準確的分別開標簽和"自閉標簽",看下面代碼:

復制代碼 代碼如下:

from HTMLParser import HTMLParser
class MyHTMLParser(HTMLParser):
  def handle_starttag(self,tag,attrs):
    print 'begin tag',tag
  def handle_startendtag(self,tag,attrs):
    print 'begin end tag',tag

str1='<br>'
str2='<br/>'
parser=MyHTMLParser()

parser.feed(str1)    # 輸出 "begin tag br"
parser.feed(str2)    # 輸出 "begin end br"

相關文章

  • Python?Playwright的使用詳解

    Python?Playwright的使用詳解

    本篇博客為大家介紹一款新的自動化測試工具,效果類似?selenium,但是這個模塊年輕。模塊名稱為?playwright-python,微軟開源的,是針對?Python?語言的純自動化工具,感興趣的可以了解一下
    2022-10-10
  • Python要如何實現(xiàn)列表排序的幾種方法

    Python要如何實現(xiàn)列表排序的幾種方法

    這篇文章主要介紹了Python要如何實現(xiàn)列表排序的幾種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • python多線程抽象編程模型詳解

    python多線程抽象編程模型詳解

    這篇文章主要為大家詳細介紹了python多線程抽象編程模型,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • python編程簡單幾行代碼實現(xiàn)視頻轉換Gif示例

    python編程簡單幾行代碼實現(xiàn)視頻轉換Gif示例

    這篇文章主要為大家介紹了簡單使用幾行python代碼就可以實現(xiàn)將視頻轉換Gif的示例過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • Python3 循環(huán)語句(for、while、break、range等)

    Python3 循環(huán)語句(for、while、break、range等)

    這篇文章主要介紹了Python3 循環(huán)語句(for、while、break、range等),大家把下面的文章看完就基本上就可以了解了python的循環(huán)實現(xiàn)方式了
    2017-11-11
  • python?包之?multiprocessing?多進程

    python?包之?multiprocessing?多進程

    這篇文章主要介紹了python?包之?multiprocessing?多進程,首先創(chuàng)建一個進程。實例化?Process?類創(chuàng)建一個進程對象、然后調(diào)用它的?start?方法即可生成一個子進程,下文更多相關資料,需要的朋友可以參考一下
    2022-04-04
  • python實現(xiàn)發(fā)送QQ郵件(可加附件)

    python實現(xiàn)發(fā)送QQ郵件(可加附件)

    這篇文章主要為大家詳細介紹了python實現(xiàn)發(fā)送QQ郵件,可添加附件功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • python基于celery實現(xiàn)異步任務周期任務定時任務

    python基于celery實現(xiàn)異步任務周期任務定時任務

    這篇文章主要介紹了python基于celery實現(xiàn)異步任務周期任務定時任務,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • Python3和PyCharm安裝與環(huán)境配置【圖文教程】

    Python3和PyCharm安裝與環(huán)境配置【圖文教程】

    這篇文章主要介紹了Python3和PyCharm安裝與環(huán)境配置,結合圖文形式詳細分析了Python3和PyCharm的安裝、環(huán)境配置、測試命令及相關操作注意事項,需要的朋友可以參考下
    2020-02-02
  • python抓取網(wǎng)頁圖片并放到指定文件夾

    python抓取網(wǎng)頁圖片并放到指定文件夾

    這篇文章主要介紹了python抓取網(wǎng)頁圖片并放到指定文件夾,需要的朋友可以參考下
    2014-04-04

最新評論

东海县| 穆棱市| 大英县| 车致| 印江| 昭平县| 奉化市| 汾阳市| 岑巩县| 灵璧县| 新宾| 沅陵县| 乾安县| 绿春县| 兴山县| 高碑店市| 南丰县| 称多县| 乌兰察布市| 抚远县| 盐城市| 安远县| 甘洛县| 宁武县| 南阳市| 昭平县| 隆昌县| 蒙山县| 清水县| 拜泉县| 长丰县| 洛阳市| 丹江口市| 措美县| 澄城县| 湾仔区| 曲阳县| 石楼县| 南涧| 伽师县| 渝北区|