1分钟快速生成用于网页内容提取的xslt

思路:

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_ENTEvoqueY节点,代表黄金时代行数据

图片 1

包括:

其三步,点击专门的学问台的“测量试验”开关,xslt就生成了,在“数据法则”窗口展现出来

STATUS单行数据施行景况

图片 2

EXECUTION_TIME奉行时间

经过上述的操作,不用编制程序,用图形化界面直接在页面上注脚,1分钟就足以生成xslt

STEP_RESULT单步实践结果

4、怎么着使用XSLT

COMPONENT_NAME组件名称,

在python使用xslt提取网页数据一文,大家把生成xslt作为贰个字符串交给程序,给人深感好像大器晚成转眼回到了公元元年以前文明,前边讲的那么好,最终用了很原始的正片。其实不然,那些只是多少个事例。在《python即时网络爬虫项目:
内容提取器的概念》一文已经初见端倪了,有各个注入xslt的章程,最自动化的章程是api,将在一而再小说中详尽批注。

STEP_DESC福睿斯IPTION步骤描述

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使用正则表明式提取网页ULANDL的点子
  • Python举办多少提取的章程总计

 

上边上,生成xml的python代码,那么些创造xml结构就不会细小略了.

动用xml.dom.minidom就能够了,通晓多少个要点相当轻便就成立三个xml

1,成立叁个xml文书档案

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

xmldoc = xmlDoc.Document

发表评论

电子邮件地址不会被公开。 必填项已用*标注