Как скачать веб-страницу xhtml, используя wget

Привет, когда я пытаюсь щелкнуть правой кнопкой мыши и сохранить страницу, так как веб-страница сохраняется как.xhtml . Но когда я пытаюсь загрузить его с помощью wget или curl, он загружается как.html. Есть ли способ, которым я могу скачать его как он.xhtml? Мне это действительно нужно.

3 ответа

Вы скачиваете RSS-канал. Это не (X)HTML-документ, а его собственный тип XML-документа. Ваш браузер отображает (X)HTML-представление RSS-канала XML. Если вы нажмете "Сохранить как" в браузере, он сохранит это представление на диск. Если вы бежите wget/curl против URL-адреса RSS-канала, вы загружаете его XML-файл. Каждый браузер может выбрать другое представление для RSS-каналов. Там нет никакого способа подражать этому просто wget/curl,

Обновление 1: вам нужно программное обеспечение, которое переводит RSS-канал XML в XHTML (то есть XML типа A в XML типа B). Это делается с помощью XSLT (преобразования языка расширяемой таблицы стилей). Не существует очевидного или "правильного" решения, поскольку целевое представление может быть свободно выбрано путем написания произвольной таблицы стилей XSL. Имейте в виду, что это не особенно легко. В зависимости от используемого вами технологического стека также могут быть доступны готовые решения. Попробуйте поискать в Google "rss to xhtml" или аналогичный.

Обновление 2: чтобы начать, сделайте следующее:

  • устанавливатьxsltproc (должен быть доступен в вашем менеджере пакетов, но: скачать, источники)
  • Сохраните таблицу стилей ниже, чтобы rss2xhtml.xsl
  • wget -O - -o /dev/null "http://www.rt.com/rss/news/" | xsltproc rss2xhtml.xsl /dev/stdin > out.xhtml
  • ... и до того, вот ваш HTML

Предоставленная таблица стилей очень проста, настройте ее по своему усмотрению, если вы хотите изучить этот материал:)

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <!-- http://stackru.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>

Вы можете сделать это, добавив параметры -O:

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

Или вы можете попробовать сделать это с помощью cURL

curl https://www.centos.org > centos-org.xhtml

Афайк единственная разница это расширение.

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

Другие вопросы по тегам