【问题标题】:crawl links of sitemap.xml through wget command通过wget命令抓取sitemap.xml的链接
【发布时间】:2013-06-27 03:37:39
【问题描述】:

我尝试抓取 sitemap.xml 的所有链接以重新缓存网站。但是 wget 的递归选项不起作用,我只得到响应:

远程文件存在但不包含任何链接 -- 不检索。

但可以肯定的是,sitemap.xml 中充满了“http://...”链接。

我几乎尝试了 wget 的所有选项,但对我没有任何效果:

wget -r --mirror http://mysite.com/sitemap.xml

有谁知道如何打开网站 sitemap.xml 中的所有链接?

谢谢, 多米尼克

【问题讨论】:

    标签: wget web-crawler sitemap.xml


    【解决方案1】:

    wget 似乎无法解析 XML。因此,您必须手动提取链接。你可以这样做:

    wget --quiet http://www.mysite.com/sitemap.xml --output-document - | egrep -o "https?://[^<]+" | wget -i -
    

    我学会了这个技巧here

    【讨论】:

    • 如何将每个下载的html文件名设置为页面标题?现在一切都只是 index.html、index.html.1、index.html.2 等
    • 希望看到对此的详细说明,它在 xml 文件结构中考虑了许多子项...有人吗?不过这很好!谢谢!
    • 我有 gz 格式的站点地图,我应该如何访问它的网址。
    • 我还想获取 .amp 页面,这些页面未在站点地图中列出。如何从这些 url 创建 amp url。我的 amp 网址使用 .amp 扩展名。
    【解决方案2】:

    虽然这个问题比较老,但谷歌将我发送到这里。

    我终于用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>&#xa;</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 作为练习留给读者 ;-) ) 这是做什么的:

    1. 检索 sitemap.xml
    2. 解析站点地图,将 url-list 输出为文本(每行一个 url)
    3. 使用 xargs 在每个 url 上调用“curl”,并行使用 4 个请求)

    【讨论】:

    • 这应该被标记为答案。根据站点地图架构解析 XML 是唯一可靠的解决方案。
    • 很好的答案,谢谢!
    【解决方案3】:

    您可以使用其中一种站点映射工具。试试Slickplan。它具有站点爬虫选项,通过使用它,您可以导入现有网站的结构并从中创建可视站点地图。然后,您可以将其导出为 Slickplan XML 格式,其中不仅包含链接,还包含 SEO 元数据、页面标题(产品名称)和一堆其他有用的数据。

    【讨论】:

      猜你喜欢
      • 2015-09-24
      • 1970-01-01
      • 1970-01-01
      • 2011-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-07
      • 1970-01-01
      相关资源
      最近更新 更多