首页 > 解决方案 > 抓取 PDF 并将其上传到 Django 中的 S3

问题描述

我正在尝试从网站上抓取 PDF 并将它们上传到 S3 存储桶。我有一个可以使用 beautifulsoup4 在本地成功下载文件的工作刮板,以及一个使用 Boto 将文件上传到 S3 的工作脚本。我遇到的问题是一种跳过在本地下载它的中间步骤并将其直接下载到 S3 的方法。

抓取和上传到 S3 之间是否有良好的接口?

标签: djangoamazon-s3web-scrapingbeautifulsoupboto

解决方案


我用这个功能实现了我的目标:

from StringIO import StringIO
from urllib2 import Request, urlopen
from boto.s3.connection import S3Connection, Bucket, Key

def scrape_to_s3(filename, origin_url):
    remote_file = urlopen(Request(origin_url)).read()
    memory_file = StringIO(remote_file)


    conn = S3Connection(settings.AWS_ACCESS_KEY_ID, settings.AWS_SECRET_ACCESS_KEY)
    bucket = conn.get_bucket(settings.AWS_STORAGE_BUCKET_NAME)
    k = Key(bucket)
    k.key = "media/" + filename
    k.set_contents_from_file(memory_file)

推荐阅读