尝试使用WebHarvest在Child Link中获取信息

时间:2015-06-26 06:10:09

标签: webharvest

我想获取每个子链接的信息,但程序显示错误。以下是我的完整配置文件。该错误由以下原因引起:org.xml.sax.SAXParseException; lineNumber:6; columnNumber:724;元素类型" t.length"必须遵循属性规范,">"或" />"。**

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

<config>
    <var-def name="webpage">
        <html-to-xml>
            <http url="http://www.thestar.com.my/business/" />
        </html-to-xml>
    </var-def>

    <loop item="TheStarBiz"  index="i">
        <list>
            <xpath expression="//div[@class='nine columns mobile3']">
                <var name="webpage"></var>
            </xpath>
        </list>

        <body>
            <var-def name="title">
                <xpath expression="(//p[@class='m'])/a/text()">
                    <var name="TheStarBiz"></var>
                </xpath>
            </var-def>

            <var-def name="link">
                <xpath expression="//p[@class='m']/a/@href">
                    <var name="TheStarBiz"></var>
                </xpath>
            </var-def>



              <var-def name="new_url">
                <xquery>
                    <xq-param name="TheStarBiz"><var name="TheStarBiz"/></xq-param>
                    <xq-expression><![CDATA[
                           declare variable $TheStarBiz as node() external; 
                            let $url := data($TheStarBiz//p[@class='m']/a/@href) 
                                return
                               $url
                    ]]></xq-expression>
                </xquery>
                </var-def>

            <var-def name="new_page_content">
                    <http url="${new_url}"/>
                </var-def>                  



            <var-def name="fulldesc">
                <xpath expression="//div[@class='story']"> 
                    <var name="new_page_content"/>
                </xpath>
            </var-def>


            <var-def name="textfile">
                <file action="append" type="text" path="C:\Users\jacey\Desktop\WebHarvest\test.txt">
                    <template>
                        ${title} ${sys.cr}${sys.lf} 
                        ${link} ${sys.cr}${sys.lf} 
                        ${new_page_content} ${sys.cr}${sys.lf}
                    </template>
                </file>
            </var-def>
        </body>
    </loop>
</config>

1 个答案:

答案 0 :(得分:0)

对于那些追求的人:

我有几乎相同的错误,它是由正在解析的文件中的一段javascript引起的:

blah...for(var o=0;o<t.length;o++)...blah

事后我觉得这很明显。在我们的例子中,这是因为端点不再返回XML而是HTML。如果所需文件实际上有javascript,您可以在js周围添加CDATA标记,如下所示:

<script>
    /* <![CDATA[ */
        console.log(myJavaScriptCode < theBest);
    /* ]]> */
</script>`