O espelho do Wget deve tratar o xml como html

1

Eu quero fazer um espelho de um site que tenha um sitemap dinâmico em formato XML.

É claro que quero que o sitemap seja baixado e processado como se fosse um arquivo html.

Eu tentei o sinal -F para este arquivo, mas não funcionou, dizendo que ele não encontrou URLs dentro do arquivo.

Atualmente, presumo que isso não funcionará dessa maneira (porque wget não é para xml), mas queria pedir para não deixar de ver algo.

O conteúdo do xml é assim:

<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="http://MY_SITE/wp-content/plugins/google-sitemap-generator/sitemap.xsl"?><!-- sitemap-generator-url="http://www.arnebrachhold.de" sitemap-generator-version="4.0.8" -->
<!-- generated-on="June 11, 2017 6:05 pm" -->
<sitemapindex xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/siteindex.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <sitemap>
        <loc>http://MY_SITE/sitemap-misc.xml</loc>
        <lastmod>2017-05-31T20:49:06+00:00</lastmod>
    </sitemap>
    <sitemap>
        <loc>http://MY_SITE/sitemap-pt-post-2017-04.xml</loc>
        <lastmod>2017-04-12T16:27:52+00:00</lastmod>
    </sitemap>
    <sitemap>
        <loc>http://MY_SITE/sitemap-pt-post-2017-02.xml</loc>
        <lastmod>2017-02-10T17:50:14+00:00</lastmod>
    </sitemap>
[...]
</sitemapindex>

E cada subsitemap como:

<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="http://MY_SITE/wp-content/plugins/google-sitemap-generator/sitemap.xsl"?><!-- sitemap-generator-url="http://www.arnebrachhold.de" sitemap-generator-version="4.0.8" -->
<!-- generated-on="June 11, 2017 6:07 pm" -->
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url>
        <loc>http://MY_SITE/32017-SOME_CONTENT/</loc>
        <lastmod>2017-04-12T16:27:52+00:00</lastmod>
        <changefreq>weekly</changefreq>
        <priority>0.8</priority>
    </url>
    <url>
        <loc>http://MY_SITE/32017-SOME_OTHER_CONTENT/</loc>
        <lastmod>2017-04-12T16:24:25+00:00</lastmod>
        <changefreq>weekly</changefreq>
        <priority>0.8</priority>
    </url>
</urlset>
    
por Angelo Fuchs 09.06.2017 / 20:29

2 respostas

1

Seu problema é que, diferentemente dos links em HTML, wget -r não pode seguir links em XML. Você poderia contornar isso recuperando o sitemap primeiro, encontrando todos os URLs nele e, finalmente, recuperando-os com outro wget , por exemplo:

wget --quiet http://example.com/sitemap.xml --output-document - \
    | egrep -o "http://example\.com[^<]+" \
    | wget -i - --wait 0

Aqui, a chave é

-i file

--input-file=file

Read URLs from a local or external file. If - is specified as file, URLs are read from the standard input. (Use ./- to read from a file literally named -.) If this function is used, no URLs need be present on the command line. If there are URLs both on the command line and in an input file, those on the command lines will be the first ones to be retrieved. If --force-html is not specified, then file should consist of a series of URLs, one per line.

Oferecemos este "arquivo" a partir da entrada padrão depois de modificar o XML no formato desejado, ou seja, um URL por linha com egrep .

    
por 10.06.2017 / 09:29
0

Se o site exibir o sitemap como HTML, mas retorná-lo a você como XML, provavelmente haverá um arquivo .xsl ou .xslt (eXtensible Stylesheet Language Transformation). Isso define como o arquivo XML é realmente exibido; neste caso, provavelmente na forma de HTML. Se você fizer o download e exibi-lo, provavelmente produzirá o que você está procurando. Alternativamente, você pode aprender XSLT e escrever o seu próprio.

    
por 09.06.2017 / 22:50