我尝试抓取sitemap.xml的所有链接以重新缓存网站。但wget的递归选项不起作用,我只得到回应:
远程文件存在,但不包含任何链接 - 不检索。
但是,确保sitemap.xml充满了“http:// ...”链接。
我几乎尝试了wget的所有选项,但没有任何对我有用:
wget -r --mirror http://mysite.com/sitemap.xml
有谁知道如何打开网站sitemap.xml内的所有链接?
谢谢, 星
答案 0 :(得分:12)
似乎wget
无法解析XML。因此,您必须手动提取链接。你可以这样做:
wget --quiet http://www.mysite.com/sitemap.xml --output-document - | egrep -o "https?://[^<]+" | wget -i -
我学会了这个技巧here。
答案 1 :(得分:0)
您可以使用一种站点映射工具。尝试Slickplan。它具有站点搜寻器选项,通过使用它,您可以导入现有网站的结构并从中创建可视站点地图。然后,您可以将其导出为Slickplan XML格式,该格式不仅包含*链接,还包含SEO元数据,页面标题(产品名称)以及其他有用的数据。
答案 2 :(得分:0)
这个问题比较老的时候,google将我发送到这里。
我终于使用xsltproc来解析sitemap.xml:
sitemap-txt.xsl:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" version="1.0" encoding="UTF-8" indent="no"/>
<xsl:template match="/">
<xsl:for-each select="sitemap:urlset/sitemap:url">
<xsl:value-of select="sitemap:loc"/><xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
使用它(在这种情况下,它来自缓存预热脚本,因此不保留所检索的页面(“ -o / dev / null”),仅打印一些统计信息(“ -w ...”。 “)):
curl -sS http://example.com/sitemap.xml | xsltproc sitemap-txt.xsl - | xargs -n1 -r -P4 curl -sS -o /dev/null -w "%{http_code}\t%{time_total}\t%{url_effective}\n"
(将其重写为使用wget代替curl,这是读者的一项练习;-)) 这是什么: