В Scrapy, скачивайте файлы, вложенные под буквой - PullRequest
0 голосов
/ 21 февраля 2019

Чтобы загрузить файлы в Scrapy, добавьте ключ 'fileurls' к указанным данным с указанием значения URL для загрузки.Но мои файлы вложены где-то ниже верхнего уровня данного dict.Элемент выглядит следующим образом:

{
  "title": "foo",
  "files": {
    "drawings": [
      {
        "caption": "bar",
        "fileurl": "http://foo.com/foo/foo.pdf"
      },
      {
        "caption": "second floor",
        "fileurl": "http://foo.com/foo/bar.pdf"
      }
    ],
    "photos": [
      {
        "caption": "bar",
        "fileurl": "http://foo.com/foo/baz.pdf"
      }
    ]
  }
}

В идеале, я бы хотел, чтобы каждый файл загружался, и чтобы scrapy добавлял свой элемент "file" рядом с "fileurl".Но, похоже, это не работает автоматически.

Как мне этого добиться?Текущая версия Scrapy - 1.6.0.

1 Ответ

0 голосов
/ 21 февраля 2019

Чтобы сделать что-то подобное, вам нужно создать собственный подкласс scrapy's FilesPipeline.

Чтобы загрузка произошла, вам понадобится пользовательский get_media_requestsметод, который должен получить URL-адреса от вашего элемента и вернуть итерируемые запросы, которые будут использоваться для загрузки файлов.

После этого вам также необходимо изменить item_completed и / или file_downloaded метод для сохранения результата в точном соответствии с вашими требованиями.

Если вам нужно больше подробностей, чем то, что предусмотрено в документах, взгляните на источник и посмотрите, как работает существующий конвейер.работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...