【发布时间】:2018-06-08 19:36:33
【问题描述】:
我想使用 AWS Lambda 来抓取网站。 爬虫代码使用 Python 编写,并使用 Pip 提供的 Scrapy 库。
要运行 lambda 函数,我必须根据 their documentation here 在公共 Amazon Linux AMI 版本 - amzn-ami-hvm-2017.03.1.20170812-x86_64-gp2 中创建一个依赖项压缩包(这里只有 scrapy),添加lambda 函数并上传它以创建 lambda 函数。
现在,当我调用 lambda 函数时,它给了我以下错误:
cannot import name certificate_transparency: ImportError
Traceback (most recent call last):
File "/var/task/my_lambda_function.py", line 120, in my_lambda_handler
return get_data_from_scrapy(username, password)
File "/var/task/my_lambda_function.py", line 104, in get_data_from_scrapy
process.crawl(MyScrapyFunction)
File "/var/task/scrapy/crawler.py", line 167, in crawl
crawler = self.create_crawler(crawler_or_spidercls)
File "/var/task/scrapy/crawler.py", line 195, in create_crawler
return self._create_crawler(crawler_or_spidercls)
File "/var/task/scrapy/crawler.py", line 200, in _create_crawler
return Crawler(spidercls, self.settings)
File "/var/task/scrapy/crawler.py", line 52, in __init__
self.extensions = ExtensionManager.from_crawler(self)
File "/var/task/scrapy/middleware.py", line 58, in from_crawler
return cls.from_settings(crawler.settings, crawler)
File "/var/task/scrapy/middleware.py", line 34, in from_settings
mwcls = load_object(clspath)
File "/var/task/scrapy/utils/misc.py", line 44, in load_object
mod = import_module(module)
File "/usr/lib64/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/var/task/scrapy/extensions/memusage.py", line 16, in <module>
from scrapy.mail import MailSender
File "/var/task/scrapy/mail.py", line 22, in <module>
from twisted.internet import defer, reactor, ssl
File "/var/task/twisted/internet/ssl.py", line 59, in <module>
from OpenSSL import SSL
File "/var/task/OpenSSL/__init__.py", line 8, in <module>
from OpenSSL import crypto, SSL
File "/var/task/OpenSSL/crypto.py", line 12, in <module>
from cryptography import x509
File "/var/task/cryptography/x509/__init__.py", line 7, in <module>
from cryptography.x509 import certificate_transparency
ImportError: cannot import name certificate_transparency
以下是我正在使用的依赖项/库版本(都是最新的):
- 点 9.0.1
- Scrapy==1.4.0
- pyOpenSSL==17.5.0
- lxml==4.1.1
- 密码学==2.1.4
任何帮助将不胜感激。提前致谢。
【问题讨论】:
标签: python scrapy pip aws-lambda