<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 431,  comments - 344,  trackbacks - 0
    sgmllib.py 包含一個重要的類: SGMLParserSGMLParserHTML 分解成有用的片段,比如開始標記和結束標記。一旦它成功地分解出某個數據為一個有用的片段,它會根據所發現的數據,調用一個自身內部的方法。為了使用這個分析器,您需要子類化 SGMLParser 類,并且覆蓋這些方法。
    SGMLParserHTML 分析成 8 類數據,然后對每一類調用單獨的方法:
    開始標記 (Start tag)
    是一個開始一個塊的 HTML 標記,象 <html><head><body><pre> 等,或是一個獨一的標記,象 <br><img> 等。當它找到一個開始標記 tagnameSGMLParser 將查找名為 start_tagnamedo_tagname 的方法。例如,當它找到一個 <pre> 標記,它將查找一個 start_predo_pre 的方法。如果找到了,SGMLParser 會使用這個標記的屬性列表來調用這個方法;否則,它用這個標記的名字和屬性列表來調用 unknown_starttag 方法。
    結束標記 (End tag)
    是結束一個塊的 HTML 標記,象 </html></head></body></pre> 等。當找到一個結束標記時,SGMLParser 將查找名為 end_tagname 的方法。如果找到,SGMLParser 調用這個方法,否則它使用標記的名字來調用 unknown_endtag
    字符引用 (Character reference)
    用字符的十進制或等同的十六進制來表示的轉義字符,象  。當找到,SGMLParser 使用十進制或等同的十六進制字符文本來調用 handle_charref
    實體引用 (Entity reference)
    HTML 實體,象 &copy;。當找到,SGMLParser 使用 HTML 實體的名字來調用 handle_entityref
    注釋 (Comment)
    HTML 注釋, 包括在 <!-- ... -->之間。當找到,SGMLParser 用注釋內容來調用 handle_comment
    處理指令 (Processing instruction)
    HTML 處理指令,包括在 <? ... > 之間。當找到,SGMLParser 用處理指令內容來調用 handle_pi
    聲明 (Declaration)
    HTML 聲明,如 DOCTYPE,包括在 <! ... >之間。當找到,SGMLParser 用聲明內容來調用 handle_decl
    文本數據 (Text data)
    文本塊。不滿足其它 7 種類別的任何東西。當找到,SGMLParser 用文本來調用 handle_data

    urllib 模塊是標準 Python 庫的一部分。它包含了一些函數,可以從基于互聯網的 URL (主要指網頁) 來獲取信息并且真正取回數據。urllib 模塊最簡單的使用是提取用 urlopen 函數取回的網頁的整個文本。打開一個 URL打開一個文件相似。urlopen 的返回值是象文件一樣的對象,它具有一個文件對象一樣的方法。使用由 urlopen 所返回的類文件對象所能做的最簡單的事情就是 read,它可以將網頁的整個 HTML 讀到一個字符串中。這個對象也支持 readlines 方法,這個方法可以將文本按行放入一個列表中。當用完這個對象,要確保將它 close,就如同一個普通的文件對象。

     urllister.py

    from sgmllib import SGMLParser

    class URLLister(SGMLParser):
        def reset(self):
            SGMLParser.reset(self)
            self.urls=[]
            self.imgs=[]
        def start_a(self, attrs):
            href = [v for k, v in attrs if k=='href']
            if href:
                self.urls.extend(href)
        def start_img(self, attrs):
            img = [v for k, v in attrs if k=='src']
            if img:
                self.imgs.extend(img)

    1.resetSGMLParser__init__ 方法來調用,也可以在創建一個分析器實例時手工來調用。所以如果您需要做初始化,在 reset 中去做,而不要在 __init__ 中做。這樣當某人重用一個分析器實例時,會正確地重新初始化。
    2.象 k=='href' 的字符串比較是區分大小寫的,但是這里是安全的。因為 SGMLParser 會在創建 attrs 時將屬性名轉化為小寫。
    test.py
    import urllib, urllister
    usock=urllib.urlopen("http://www.tkk7.com/rain1102")
    parser=urllister.URLLister()
    parser.feed(usock.read())
    usock.close()
    parser.close()
    for url in parser.urls:print url
    for img in parser.imgs:print img
    posted on 2007-10-17 10:51 周銳 閱讀(2198) 評論(0)  編輯  收藏 所屬分類: Python
    主站蜘蛛池模板: 日韩插啊免费视频在线观看| 亚洲爆乳无码精品AAA片蜜桃| 理论秋霞在线看免费| 成人黄软件网18免费下载成人黄18免费视频| 窝窝影视午夜看片免费| 亚洲AV无码专区国产乱码电影| 日本一区二区在线免费观看| 日韩免费观看视频| 美女视频黄.免费网址| 亚洲男人天堂2020| 99在线视频免费观看| 亚洲第一福利网站| www视频在线观看免费| 亚洲av永久无码精品天堂久久| 亚洲天堂免费在线| 亚洲丰满熟女一区二区哦| 免费理论片51人人看电影| 羞羞视频网站免费入口| 中文字幕一精品亚洲无线一区 | 亚洲an日韩专区在线| 毛片免费全部免费观看| 美女黄频视频大全免费的| 久久久久亚洲精品中文字幕| 国产一级婬片A视频免费观看| 亚洲综合无码一区二区| 成年女人看片免费视频播放器| 亚洲av无码成人影院一区 | 免费播放特黄特色毛片| 亚洲国产综合精品中文字幕| 日韩欧美亚洲国产精品字幕久久久| 亚洲AV伊人久久青青草原| a级毛片高清免费视频| 91亚洲性爱在线视频| 国产一级淫片a免费播放口之| 最近中文字幕免费大全| 亚洲国产精品久久网午夜| 国产做床爱无遮挡免费视频| 成全视成人免费观看在线看| 亚洲人成电影在线观看网| 亚洲国产精品尤物YW在线观看| 亚洲精品免费视频|