如何使用wget下载xhtml网页

时间:2015-10-01 09:23:43

标签: linux curl wget yad

当我尝试右键单击并保存页面时,因为网页保存为.xhtml。但是当我尝试使用wget或curl下载它时,它将被下载为.html。有什么方法可以下载它,因为它像.xhtml?我真的需要它。

3 个答案:

答案 0 :(得分:3)

您正在下载RSS feed。这不是(X)HTML文档,而是它自己的XML文档类型。 您的浏览器正在显示RSS源XML的。如果在浏览器中单击“另存为”,则会将该表示保存到磁盘。如果您对RSS Feed的URL运行wget / curl,则表示您正在下载其XML文件。每个浏览器都可以为RSS提要选择不同的表示。仅使用wget / curl

无法模仿

更新1:您需要一个软件将RSS提要XML转换为XHTML(即A类型的XML到B类型的XML)。这是通过XSLT(可扩展样式表语言转换)完成的。没有明显或“正确”的解决方案,因为可以通过编写任意XSL样式表来自由选择目标表示。请注意,这并不是特别容易。根据您使用的技术堆栈,可能还有预制解决方案。尝试谷歌搜索“rss到xhtml”或类似。

更新2 :为了帮助您入门,请执行以下操作:

  • 安装xsltproc(应在您的软件包管理器中提供,但:downloadsources
  • 将下面的样式表保存到rss2xhtml.xsl
  • wget -O - -o /dev/null "http://www.rt.com/rss/news/" | xsltproc rss2xhtml.xsl /dev/stdin > out.xhtml
  • ...和presto,这是你的HTML

提供的样式表非常基础,可根据需要自定义,如果您想学习这些内容:)

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <!-- http://stackoverflow.com/a/32884376/1529709 -->
  <xsl:output method="html" indent="yes"/>
  <xsl:template match="text()"></xsl:template>
  <xsl:template match="item">
    <h2><a href="{link}"><xsl:value-of select="title"/></a></h2>
    <p><xsl:value-of select="description" disable-output-escaping="yes"/></p>
  </xsl:template>
  <xsl:template match="/rss/channel">
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html>
      <head>       
        <title><xsl:value-of select="title"/></title>
        <style>img,p {display:block;float:none;}</style>
      </head>
      <body>
        <h1><a href="{link}"><xsl:value-of select="title"/></a></h1>
        <xsl:apply-templates/>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

答案 1 :(得分:2)

您可以通过添加-O参数来执行此操作:

wget -O centos-org.xhtml https://www.centos.org

或者你可以尝试使用cURL

来做到这一点
curl https://www.centos.org > centos-org.xhtml

答案 2 :(得分:0)

Afaik唯一的区别是扩展名。

wget http://website.com/index.html && mv index.html index.xhtml