Как скачать веб-страницу 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