美高梅游戏官网娱乐_美高梅手机登录网站

美高梅游戏官网娱乐是公司推出的企业级即时在线娱乐平台,美高梅手机登录网站业界专业、信誉最好的博彩网站,美高梅游戏官网娱乐拥有最高优惠活动和返水,拥有丰富的管理经验和专业的技术队.。

来自 编程 2019-10-29 00:07 的文章
当前位置: 美高梅游戏官网娱乐 > 编程 > 正文

xslt样式要依照xml结构去做,Python即时互联网爬虫

思路:

1分钟火速变动用于网页内容提取的xslt,具体内容如下

1.采纳xslt样式,那样能够很好的和xml结合,做出精粹的告诉

1、项目背景

2.生成xml结构

在《Python即时网络爬虫项目表明》一文大家说过要做二个通用的互联网爬虫,何况能节省程序员大半的时光,而难点难题便是提取器使用的抓取法规要求快速变化。在python使用xslt提取网页数据一文,我们早就观察那一个提取法则是xslt程序,在示范程序中,直接把一长段xslt赋值给变量,但是还未有讲那豆蔻梢头段xslt是怎么来的。

 

网上好朋友自然会疑忌:那个xslt这么长,编写不是要花不短日子?

xslt样式是个很风趣,也很苍劲的,今后用的比较多,很便利就可以做出一个绝妙的告知,能够百度时而,语法特别简单,跟写html差不离的.

其实际意况况是,这一个xslt是经过GooSeeker的MS谋数台的直观标明功效自动生成的,驾驭的话1分钟就消除了。

在那处能够定制好,大家要生成告诉,是如何体统的,然后在从xml获取数据.

2、MS谋数台能做怎样

<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
 <html>
 <Head>
        <style type="text/css">

          body {
          background:#fff;
          margin:0;
          padding:40px 20px;
          font-family: "Arial", Arial, Sans-serif;
          font-size: 16px;
          color:#000;
          }

          table {
          margin:5px 5px 0;
          border:0px solid #222;
          font-size: 0.8em;
          }

          td {
          margin:5px 5px 0;
          padding:10px 10px 10px 10px;
          vertical-align:text-top;
          border:1px solid #222;
          border-width:1px 1px 1px 1px;
          }

          td.light {
          border:0px solid #222;
          }

          td.number {
          text-align:right;
          }

          td.status {
          text-align:right;
          vertical-align:text-bottom;
          }

        </style>


 </Head>
 <body>
   <!--OVER RESULT -->
   <xsl:variable name="OVER_STATUS" select="REPORT/OVER_STATUS"/>
   <xsl:variable name="STATUS" select="REPORT/LOG_ENTRY/STATUS"/>



   <h2>自动化测试执行报告</h2>
   <!--table -->
   <table border="1">
     <!--all result value-->
     <tr bgcolor="white" height = "35">
        <td>Overall Test Result</td>
        <td><xsl:value-of select="$OVER_STATUS"/></td>
        <td colspan="2"> </td>
     </tr>

     <tr bgcolor="#D8BFD8" height = "35">
       <th>执行时间</th>
       <th>单步结果</th>
       <th>响应CODE</th>
       <th>Response信息</th>
     </tr>



       <!--select font color -->
       <xsl:variable name="fontColor">
           <xsl:choose>
               <xsl:when test="$STATUS = FAILED or $STATUS = PASSED">
                   <xsl:text>white</xsl:text>
               </xsl:when>
               <xsl:otherwise>black</xsl:otherwise>
           </xsl:choose>
       </xsl:variable>

       <!--background color-->
       <xsl:variable name="backgroundColor">
           <xsl:choose>
               <xsl:when test="$STATUS = 'FAILED'">
                   <xsl:text>rgb(255,0,0)</xsl:text>
               </xsl:when>
               <xsl:when test="$STATUS = 'PASSED'">
                   <xsl:text>rgb(60,179,113)</xsl:text>
               </xsl:when>
               <xsl:otherwise>
                   <xsl:text>white</xsl:text>
               </xsl:otherwise>
           </xsl:choose>
       </xsl:variable>

       <!--log entry-->
       <xsl:for-each select = "REPORT/LOG_ENTRY">


           <tr>
               <td><xsl:value-of select="EXECUTION_TIME"/></td>
               <td bgcolor="{$backgroundColor}"><xsl:value-of select="STEP_RESULT"/></td>
               <td><xsl:value-of select="COMPONENT_NAME"/></td>
               <td><xsl:value-of select="STEP_DESCRIPTION"/></td>
           </tr>
       </xsl:for-each>

       <tr bgcolor="white">
           <font color="{$fontColor}">
               <td colspan="4">Overall Test Result:<xsl:value-of select="$OVER_STATUS"/></td>
           </font>
       </tr>
   </table>
 </body>
 </html>
</xsl:template>
</xsl:stylesheet>

MS谋数台有个图形化分界面,把意气风发雨后冬笋html拆解深入分析工具集成在同盟,满含:

xml是要依据,xslt定制的结构实行更动,或许换句话说,xslt样式要规行矩步xml结构去做

  • 凭借直观证明自动生成XSLT
  • 立马测量试验XSLT的正确
  • 树状的DOM结构呈现
  • 深入深入分析某些DOM节点的品质
  • 为DOM节点生成XPath,可筛选稳固到class、恐怕id、也许相对定位
  • 根据xpath搜索DOM节点

xml结构

MS谋数台分界面分成三部分:DOM数窗口、内嵌浏览器窗口、工作台。在职业台上定义xslt调换准绳。

REPORT/LOG_ENTRY

3、用MS谋数台生成XSLT

REPORT下OVER_STATUS节点,那几个是整套报告的结果,独有当全体规规矩矩为passed时才会为passed

假如大家要抓取论坛帖子列表,上面一步步授课操作方法:
先是步,张开GooSeeker的MS谋数台,输入要抓取的网站
其次步,在MS谋数台的浏览器展现窗口里,直接接收要提取的开始和结果,而且起个名字,点击确认

每个LOG_ENTCRUISERY节点,代表豆蔻梢头行数据

图片 1

包括:

其三步,点击专业台的“测量检验”按键,xslt就生成了,在“数据法则”窗口体现出来

STATUS单行数据实市场价格况

图片 2

EXECUTION_TIME施行时间

透过上述的操作,不用编制程序,用图形化界面直接在页面上标明,1分钟就可以生成xslt

STEP_RESULT单步施行结果

4、如何利用XSLT

COMPONENT_NAME组件名称,

在python使用xslt提取网页数据一文,大家把生成xslt作为三个字符串交给程序,给人认为好像后生可畏转眼回到了吴国文明,前面讲的那么好,最后用了很原始的正片。并不是那样,那么些只是三个例子。在《python即时互连网爬虫项目: 内容提取器的定义》一文已经初见端倪了,有多种流入xslt的点子,最自动化的点子是api,将要继续文章中详尽解说。

STEP_DESCLANDIPTION步骤描述

5、文书档案改革历史

 

二零一四-05-28:V3.0,增添第二章
二〇一六-05-26:V2.0,增加补充文字表明

自然那个都足以自已定义,能够团结扩张或调减,可是xslt表中也要相对应的加多或收缩

如上便是本文的全体内容,希望对大家的学习抱有利于,也可望我们多都赐教脚本之家。

<?xml version="1.0" encoding="utf-8"?>
    <?xml-stylesheet href="LOG.XSLT" type="text/xsl"?>
    <REPORT>
        <OVER_STATUS>PASSED</OVER_STATUS>
        <LOG_ENTRY>
            <STATUS>FAILED</STATUS>
            <EXECUTION_TIME>2017.06.15 15:57:16</EXECUTION_TIME>
            <STEP_RESULT>FAILED</STEP_RESULT>
            <COMPONENT_NAME>704</COMPONENT_NAME>
            <STEP_DESCRIPTION>{u'nextUrl': u'http://www.elong.com', u'message': u'u9a8cu8bc1u7801u9519u8bef', u'code': u'704', u'success': False, u'isShowVerifyCode': True}</STEP_DESCRIPTION>
        </LOG_ENTRY>
        <LOG_ENTRY>
            <STATUS>FAILED</STATUS>
            <EXECUTION_TIME>2017.06.15 15:57:16</EXECUTION_TIME>
            <STEP_RESULT>FAILED</STEP_RESULT>
            <COMPONENT_NAME>704</COMPONENT_NAME>
            <STEP_DESCRIPTION>{u'nextUrl': u'http://www.elong.com', u'message': u'u9a8cu8bc1u7801u9519u8bef', u'code': u'704', u'success': False, u'isShowVerifyCode': True}</STEP_DESCRIPTION>
        </LOG_ENTRY>
    </REPORT>

你或者感兴趣的小说:

  • python使用xslt提取网页数据的艺术
  • 行使Python下的XSLT API实行web开拓的简练教程
  • 一个用xslt样式将xml解析为xhtml的类TransformBinder(兼容FF和IE7.0)
  • 用xslt将xml解析成xhtml的代码
  • XSLT轻便入门第二章:XSLT的实例
  • python提取字典key列表的法门
  • Python完结从url中提取域名的二种办法
  • python利用正则表明式提取字符串
  • python使用正则表明式提取网页U本田UR-VL的法子
  • Python实行数据提取的主意计算

 

上面上,生成xml的python代码,那些创设xml结构就很简单了.

选取xml.dom.minidom就足以了,明白多少个要点比较轻松就创办一个xml

1,创造一个xml文书档案

import xml.dom.minidom as xmlDoc  #xmlDoc起的别名

xmldoc = xmlDoc.Document

 

2.因为我们要运用xslt样式,所以呢.

创办的xml第意气风发行是xml头    <?xml version="1.0" encoding="utf-8"?> 那样python暗中认可已经有了,就绝不我们创造了,那么

其次行,大家要写样式头 <?xml-stylesheet href="LOG.XSLT" type="text/xsl"?>   头中写了援引相似目录下的LOG.XSLT ,类型TEXT/XSL

要小心一点href属性不要写成这么D:demoLOG.XSLT 那样写会有标题,只要把那几个文件和xml放在同等目录就好了.

            #xml样式
            xlstNode = xmlD.createProcessingInstruction("xml-stylesheet","href="LOG.XSLT" type="text/xsl"")
            xmlD.appendChild(xlstNode)

3.成立多少个REPORT根节点,你也能够起名ROOT,叫什么名字看你和谐了

始建节点用,createElement,之后用appendChild扩充节点到xml对象

            report = xmlD.createElement('REPORT')
            xmlD.appendChild(report)

4.未来创设其余节点,一样用createElement,然而只要节点下要增添内容要用xmlDoc.createTextNode('passed')

以下代码意思是:创制三个over_status的节点,节点文本为passed,然后,将此节点增至根节点REPORT下

            overStatus = xmlD.createElement('OVER_STATUS')
            overStatus.appendChild(xmlD.createTextNode('PASSED'))
            report.appendChild(overStatus)

 图片 3

有上述4点,基本成立多个xml没失常了.

 

 

 生成xml具体python代码:

以下代码成立根节点做为了一个独门的函数,之所以那样做因为要转换的告诉,只创制两个根节点,和over_status 结果意况

其余累计的行放在了节点LOG_ENTPRADOY下,叁个根节点下能够有多个LOG_ENTRY节点........一个LOG_ENTTucsonY节点代码后生可畏行数据实施结果

#*_*coding:utf-8*_*

import xml.dom.minidom as xmlDoc
import os
import gl
import sys



class cREPORTXML(object):
    def __init__(self):
        self.__struct = self.createReportNode()

    #创建report节点
    def createReportNode(self):
        try:
            xmlD = xmlDoc.Document()

            #xml样式
            xlstNode = xmlD.createProcessingInstruction("xml-stylesheet","href="LOG.XSLT" type="text/xsl"")
            xmlD.appendChild(xlstNode)

            report = xmlD.createElement('REPORT')
            xmlD.appendChild(report)

            overStatus = xmlD.createElement('OVER_STATUS')
            overStatus.appendChild(xmlD.createTextNode('PASSED'))
            report.appendChild(overStatus)

            returnResult = []
            returnResult.append(xmlD)
            returnResult.append(report)
        except Exception,ex:
            return ex.message
        return returnResult


    def writeReport(self,execTime,stepResult,comName,stepDisc):
        #reportNodeList = self.createReportNode()

        entry = self.createLogEntry(self.__struct[0],execTime,stepResult,comName,stepDisc)
        self.__struct[1].appendChild(entry)
        self.writeXml(self.__struct[0],gl.reporterPath+'reportxml.xml')
        #self.writeXml(self.__struct[0],gl.reporterPath+'reportxml_%s.xml'%(gl.curTimeStr))
 #-------------创建xml格式-有多个相同的节点,并且该节点下有4个名称相同的子节点----------------
    def createLogEntry(self,docObj,executeTime,stepResult,componentName,stepDiscription):
        entry = docObj.createElement("LOG_ENTRY")

        status = docObj.createElement("STATUS")
        nodeExecuteTime = docObj.createElement("EXECUTION_TIME")
        nodeStepResult = docObj.createElement("STEP_RESULT")
        nodeComponentName = docObj.createElement("COMPONENT_NAME")
        nodeStepDiscription = docObj.createElement("STEP_DESCRIPTION")

        status.appendChild(docObj.createTextNode(stepResult))
        nodeExecuteTime.appendChild(docObj.createTextNode(executeTime))
        nodeStepResult.appendChild(docObj.createTextNode(stepResult))
        nodeComponentName.appendChild(docObj.createTextNode(componentName))
        nodeStepDiscription.appendChild(docObj.createTextNode(stepDiscription))

        entry.appendChild(status)
        entry.appendChild(nodeExecuteTime)
        entry.appendChild(nodeStepResult)
        entry.appendChild(nodeComponentName)
        entry.appendChild(nodeStepDiscription)
        return entry


    #参数,xml对象,准备存储xml文件路径,文件模式:读 and 写 (r and w)
    def writeXml(self,xmlDoc,xmlPath):
        f = open(xmlPath,"w")
        xmlDoc.writexml(f,indent='t', addindent='t', newl='n', encoding="utf-8") #中间的加了一些格式符,这样生成的xml自动对齐格式
        f.close()




if __name__=='__main__':
    reportx =cREPORTXML()
    print  reportx.writeReport('20170602','PASSED','1-SETTEXT','AUTOMATION TEST')
    print  reportx.writeReport('20170606','FIELD','2-SETTEXT','AUTOMATION TEST')

 

 用ie伸开xml报告,当然能够见见计算果展现有一点点难题,那几个不影响申报称,代码中管理一下就好.

大约的报告就到位了,追求康健的能够在细化一下,扩展部分任何音信,调解一下颜色.

图片 4

 

本文由美高梅游戏官网娱乐发布于编程,转载请注明出处:xslt样式要依照xml结构去做,Python即时互联网爬虫

关键词: