Python 網路程式設計測試 HTML解析

2021-06-06 06:18:11 字數 1690 閱讀 7698

python提供了乙個htmlparser的模組,當然現在web page通常都多多少少存在html不規範的問題,比如說但是並沒有關閉(也就是說沒有

,雖然xhtml可以避免這種事情的發生),mxtidy , 和utidylib通常可以完成html正規化的處理工作。

似乎在解析html時,正規表示式就不是那麼有力的工具了。還是使用python提供的模組和工具比較方便

下面的code定義了乙個從htmlparser繼承而來的titleparser類,通過該物件對標籤進行「識別」和解析。

#test of the parsing the html and xml

import sys , urllib2

from htmlparser import htmlparser

class titleparser(htmlparser):

def __init__(self):

self.title = ''

self.readingtitle = 0

htmlparser.__init__(self)

def handle_starttag(self , tag , attrs):

if tag == 'title':

self.readingtitle = 1

def handle_data(self , data):

if self.readingtitle:

self.title += data

def handle_endtag(self , tag):

if tag == 'title':

self.readingtitle = 0

def gettitle(self):

return self.title

def parsehtmltitle():

print('choose the file address: ')

addr = sys.stdin.readline().rstrip()

if(addr == 'url'):

print('input the url address:')

elif(addr == 'local'):

print('input the local filename: ')

else:

print('input the right method')

filename = sys.stdin.readline().rstrip()

if(addr == 'url'):

fd = urllib2.urlopen(filename)

elif(addr == 'local'):

fd = open(filename)

else:

print('filename wrong')

tp = titleparser()

tp.feed(fd.read())

print('the title is: ' , tp.gettitle().strip())

上面code中並不包涵實體翻譯功能,所以在通過urlopen方法開啟web page時會存在實體消失或其他相關問題(本人認為是這樣,還望牛人指教)

結果:

Python網路程式設計測試 DNS

dns就是傳說中的網域名稱解析,完成網域名稱和ip之間的轉換過程,值得注意的是 反向dns是由ip到網域名稱,這需要和逆向相區別。python 2.6以下版本,3.2還沒試過,有了解的同學請指教 並沒有 原生 的提供dns相關功能的module,pydns 在sourcerage上可以直接搜尋到,或...

python 網路程式設計測試 host應答

五一假期最後一天,隨便寫寫code,先上個小小伺服器應答udp請求。由於本人只有一台機器,所以使用的是lo0埠,socket設定為so reuseaddr 伺服器端 test of host import sys socket traceback time host xport sys.argv 1...

Python 網路程式設計測試 Parser初探

html或者xhtml可能是每個使用電腦的人最常接觸的程式語言,在感嘆google bing baidu等等 順便加上我老師的安圖搜尋 下面的code是測試而已,不論從 表面 或者從 內在 來說都存在一大堆問題,僅供同學們參考 code實現了從網頁資訊中獲取url的功能 class imgparse...