1

Я пытаюсь сделать резервную копию сайта, содержащего страницы с таким тегом:

<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 ответ1

0

Существует параметр -p/--page-requisites (вместе с -r ), который загружает большинство внешних URL-адресов, необходимых для правильного отображения заданной HTML-страницы (если только они не исключены из файла роботов).

Подробнее об этом можно прочитать в руководстве (man wget):

Стоит знать, что идея Wget о ссылке на внешний документ - это любой URL, указанный в теге <A> теге <AREA> или <LINK> отличный от <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 }
};

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .