一个简单的PYTHON代码

原创 2007年09月22日 17:07:00
 

HTML Tags and JavaScript tutorial



一个简单的PYTHON代码





用PYTHON写代码很高兴,更高兴的是今天竟然用了一天的上班时间来练这个。当然也是为我们的那个程序服务的。
我们目前要把一个表态HTML页面转换成PORTAL。由于表态页面数量很大,所以我们采用动态改写的方法。由于这篇的目的不是介绍我们的项目,所以直接说我的脚本。由于我们的工作,我们现在做操作前要对所以的静态页面进行简单的标记分析。这里主要分析TABLE,TR和TD。
下面贴下我的代码:主要是两个文件
htmlParser.py
import os,util
def htmlParse (htmlname,errorfile):
    stackList = []
    total = 0
    incomment = 0   
    file = open(htmlname)           
    strLines = file.readlines()
    for line in strLines:
        total += 1
        comtmp = util.judgeComment (line)
        if comtmp == 1:#<!-- -->
            pos1 = line.find('<!--') - 1
            pos2 = line.find('-->') + 2
            line = line[0:pos1] + line[pos2:]
        if comtmp == 2:#<!--
            incomment = 1
            pos = line.find('<!--') - 1
            line = line[0:pos]
        if comtmp == 3:#-->
            incomment = 0
            pos = line.find('-->') + 2
            line = line[pos:]
        if incomment == 1:# this line is in comment
            continue           
       
        taglist = util.getLineTagList(line)
        for item in taglist:           
            res = util.addDelTag(item,stackList)
            if res == -1:
                errorinfo = htmlname + os.altsep + str(total) + str(stackList) + os.linesep
                errorfile.append(errorinfo)
                return
    if len(stackList) != 0:
        result = htmlname + str(stackList) + ' are not closed!' + os.linesep
        #errorfile.append(result)
               
if __name__ == '__main__':
    pattern = "*.html"
    startdir = "F://sshome"
    #startdir = "D://test"
    files = util.find (pattern, startdir)
    res = []
    for filename in files:
        htmlParse(filename,res)
    res.append(str(len(res)))
    filewrite = file("F://errorPages.txt",'w')
    filewrite.writelines(res) 
另一个文件util.py
import os, fnmatch
# judge comment tag to delete comment statement
def judgeComment (line):
    openTag = line.find('<!--')
    closeTag = line.find('-->')
    if openTag != -1:
        if closeTag != -1:# <!--  -->
            return 1
        else:#<!--
            return 2
    elif closeTag != -1:#-->
        return 3
    else:#
        return 4
# sort for a 2 dimension list(array)
def sortFor2di (listtosort):
    size = len(listtosort)
    for i in range(size-1):
        for j in range(i + 1,size):
            list1 = listtosort[i]
            list2 = listtosort[j]
            if list1[0] > list2[0]:
                listtosort[i],listtosort[j] = listtosort[j],listtosort[i]
# get all tags in a line in the form of list
def getLineTagList (line):
    taglist = []
    addTag2List (line,'table',taglist)
    addTag2List (line,'tr',taglist)
    addTag2List (line,'td',taglist)
    sortFor2di (taglist)
    return taglist
def addTag2List (line,tag,taglist):
    pos = line.find('<'+tag)
    if pos != -1:
        taglist.append([pos,'<'+ tag + '>'])
    pos = line.find('</'+tag+'>')
    if pos != -1:
        taglist.append([pos,'</' + tag + '>'])
def addDelTag(itemlist,stackList):
    tag = itemlist[1]
    res = 0
    res += judgeWhichTag (tag,'table',stackList)
    res += judgeWhichTag (tag,'tr',stackList)
    res += judgeWhichTag (tag,'td',stackList)
    if res != 0:
        return -1
    else:
        return 1
#    
def judgeWhichTag (tag,lable,stackList):
    if tag == '<' + lable + '>':
        stackList.append(lable)
        return 0
    elif tag == '</' + lable + '>':
        size = len(stackList)
        if size < 1:
            return -1
        elif stackList[size - 1] == lable:
            del(stackList[size -1 ])
            return 0
        else:
            return -1
    else:
        return 0
# used to deal tag      
def tagDeal (tag, line,stackList):
    openTag = line.find('<'+tag)
    closeTag = line.find('</'+tag+'>')
    if openTag != -1:
        stackList.append (tag)
        if closeTag == -1:
            return 1
    if closeTag != -1:
        size = len(stackList)
        if size < 1:
            return -1
        else:
            lastItem = stackList[size - 1]
            if lastItem != tag:
                return -1
            else:
                del (stackList[size - 1])
                return 1
def find (pattern,startdir=os.curdir):
    files = []
    os.path.walk(startdir,visitor,(pattern,files))
    files.sort()
    return files
def visitor ((pattern,files),thisdir,names):
    for name in names:
        if fnmatch.fnmatch(name,pattern):
            fullpath = os.path.join(thisdir,name)
            files.append(fullpath)
申明一下,我是初学PYTHON。上面的程序写得很乱,以后有时间再修改或加点注释。当然很欢迎各位朋友
给点意见。
不过,最后的结果是我们的总共1000表态页面中共有200个页面这三种标签有错误。这就意味着有一大堆事情要处理。至于怎么做我们还没做好决定。


python学习—几个简单小程序

python初阶学习
  • lcr_happy
  • lcr_happy
  • 2016年12月28日 13:41
  • 14679

慕课网Python3.x开发简单爬虫及完整源码

爬虫技术用来从互联网上自动获取需要的数据。课程从对爬虫的介绍出发,引入一个简单爬虫的技术架构,然后通过是什么、怎么做、现场演示三步骤,解释爬虫技术架构中的三个模块。最后,一套优雅精美的爬虫代码实战编写...
  • hanchaobiao
  • hanchaobiao
  • 2017年06月04日 18:26
  • 7359

抓取CSDN博客文章的简单爬虫python源码

  • 2016年06月25日 00:07
  • 4KB
  • 下载

Python实现简单爬虫

简单爬虫构架 时序图 Url管理器 管理待抓取url集合和已抓取Url集合 通过两个列表(已抓取url列表,未抓取url的列表)防止重复抓取、防止循环抓取 网页下载器 将互联网上Url对应的网页...
  • zxc123e
  • zxc123e
  • 2016年04月29日 17:27
  • 3207

Python:Python让代码更简单

我将在学习Python的路上,一路狂奔…… 胶水语言Python , 是一种面向对象的解释型计算机程序设计语言,具有丰富和强大的库,Python 已经成为继JAVA,C++之后的的第三大语言。 特点:...
  • qq_15283475
  • qq_15283475
  • 2017年04月26日 12:14
  • 275

Python进行时:一个简单的神经网络实现及代码详解

神经网络是深度学习的基础,所以我认为,学习深度学习有两大基石,即:学好神经网络理论,学好实现理论的利器——Python。 一篇很好的文章,用Python编写了简单的BP神经网络,并几乎将所有代码解释...
  • LucyGill
  • LucyGill
  • 2017年03月08日 14:44
  • 1351

python简单地实现几个小代码

#一到一百相加的和: def sum(): sum = 0 for n in range(1, 101): sum = sum + n return sum ...
  • diye666
  • diye666
  • 2017年12月12日 16:40
  • 63

Wolf从零学编程-用Python打造简单加密程序(三)

分类: Python写加密程序(7)  版权声明:本文为博主原创文章,转载请注明出处和链接。 目录(?)[+] 我已经完成了hash值计算和...
  • guangyinglanshan
  • guangyinglanshan
  • 2017年08月25日 16:19
  • 236

用不到50行的Python代码构建最小的区块链

尽管一些人认为区块链是一个等待问题的解决方案,但毫无疑问,这种新技术是计算机的奇迹。但是,区块链到底是什么呢? 区块链 它是比特币或其他加密货币进行交易的数字账本,账本按时间顺序记录并对外公开。 ...
  • lltaoyy
  • lltaoyy
  • 2017年08月03日 16:37
  • 371

卷积神经网络(三):卷积神经网络CNN的简单实现(部分Python源码)

上周末利用python简单实现了一个卷积神经网络,只包含一个卷积层和一个maxpooling层,pooling层后面的多层神经网络采用了softmax形式的输出。实验输入仍然采用MNIST图像使用10...
  • xuanyuansen
  • xuanyuansen
  • 2014年12月14日 13:30
  • 23521
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个简单的PYTHON代码
举报原因:
原因补充:

(最多只允许输入30个字)