wget解析标签脚本

wget解析标签脚本

我正在尝试备份包含带有如下标签的页面的网站:

<a id="12379-video"></a>
</div>

<script>
    jwplayer("12379-video").setup({
          file: "http://xyz.cloudfront.net/abc/moviename.mp4",
          flashplayer: "/sites/all/jwplayer/player.swf",
              stretching: "exactfit",
          height: 480,
          width: 640    });
</script></span>
  </div>
  1. 是否wget提取 URL 并跟踪它?(以及给命令提供的正确参数是什么)

  2. wget用于解析文件并提取 URL 的机制究竟是什么?

  3. 有什么方法可以告诉解析器也考虑该标签吗?(使用正则表达式或类似表达式)

  4. 如果不可能的话,您建议采取什么其他策略?(grep使用 bash 编写脚本或其他方式)

答案1

有一个-p/--page-requisites参数(与之-r一起),它将下载正确显示给定 HTML 页面所需的大多数外部 URL(除非它们在 robots 文件中被排除)。

更多相关内容可以参阅手册(man wget):

值得知道的是,Wget 对外部文档链接的概念是<A>标签、<AREA>标签或<LINK>除 之外的标签中指定的任何 URL <LINK REL="stylesheet">

由于 Wget 通常不区分外部文档和内联文档,因此通常会剩下缺少必需品的“叶文档”。

请注意,Wget 有一个 HTML 标签/属性对的内部表,它在递归检索期间查找链接文档时会考虑该表。要添加一个,请尝试使用--follow-tags=list(逗号分隔列表),与 相对--ignore-tags=list

此标签列表可能定义在html-url.c其内容如下:

/* For tags handled by tag_find_urls: attributes that contain URLs to
   download. */
static struct {
  int tagid;
  const char *attr_name;
  int flags;
} tag_url_attributes[] = {
  { TAG_A,              "href",         ATTR_HTML },
  { TAG_APPLET,         "code",         ATTR_INLINE },
  { TAG_AREA,           "href",         ATTR_HTML },
  { TAG_BGSOUND,        "src",          ATTR_INLINE },
  { TAG_BODY,           "background",   ATTR_INLINE },
  { TAG_EMBED,          "href",         ATTR_HTML },
  { TAG_EMBED,          "src",          ATTR_INLINE | ATTR_HTML },
  { TAG_FIG,            "src",          ATTR_INLINE },
  { TAG_FRAME,          "src",          ATTR_INLINE | ATTR_HTML },
  { TAG_IFRAME,         "src",          ATTR_INLINE | ATTR_HTML },
  { TAG_IMG,            "href",         ATTR_INLINE },
  { TAG_IMG,            "lowsrc",       ATTR_INLINE },
  { TAG_IMG,            "src",          ATTR_INLINE },
  { TAG_INPUT,          "src",          ATTR_INLINE },
  { TAG_LAYER,          "src",          ATTR_INLINE | ATTR_HTML },
  { TAG_OBJECT,         "data",         ATTR_INLINE },
  { TAG_OVERLAY,        "src",          ATTR_INLINE | ATTR_HTML },
  { TAG_SCRIPT,         "src",          ATTR_INLINE },
  { TAG_TABLE,          "background",   ATTR_INLINE },
  { TAG_TD,             "background",   ATTR_INLINE },
  { TAG_TH,             "background",   ATTR_INLINE }
};

相关内容