我尝试抓取 sitemap.xml 的所有链接以重新缓存网站。但是 wget 的递归选项不起作用,我只得到响应:
远程文件存在但不包含任何链接——不检索。
但可以肯定的是,sitemap.xml 中充满了“http://...”链接。
我几乎尝试了 wget 的所有选项,但对我没有任何帮助:
wget -r --mirror http://mysite.com/sitemap.xml
有谁知道如何打开网站 sitemap.xml 中的所有链接?
谢谢,多米尼克
我尝试抓取 sitemap.xml 的所有链接以重新缓存网站。但是 wget 的递归选项不起作用,我只得到响应:
远程文件存在但不包含任何链接——不检索。
但可以肯定的是,sitemap.xml 中充满了“http://...”链接。
我几乎尝试了 wget 的所有选项,但对我没有任何帮助:
wget -r --mirror http://mysite.com/sitemap.xml
有谁知道如何打开网站 sitemap.xml 中的所有链接?
谢谢,多米尼克
似乎wget
无法解析 XML。因此,您必须手动提取链接。你可以这样做:
wget --quiet http://www.mysite.com/sitemap.xml --output-document - | egrep -o "https?://[^<]+" | wget -i -
我在这里学到了这个技巧。
虽然这个问题比较老,但谷歌把我发到这里。
我终于用 xsltproc 来解析 sitemap.xml:
站点地图-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 作为练习留给读者 ;-) )它的作用是:
您可以使用其中一种站点映射工具。试试Slickplan。它具有站点爬虫选项,通过使用它,您可以导入现有网站的结构并从中创建可视站点地图。然后,您可以将其导出为 Slickplan XML 格式,其中不仅包含链接,还包含 SEO 元数据、页面标题(产品名称)和一堆其他有用的数据。