【问题标题】:Different results for request in AWS Lambda and in local or other AWS VMsAWS Lambda 和本地或其他 AWS VM 中的请求结果不同
【发布时间】:2022-01-21 21:45:48
【问题描述】:

我正在执行一些测试以了解如何有效地执行网络报废。 我在本地 Python 环境中开发了一些运行良好的脚本:

    ssl._create_default_https_context = ssl._create_unverified_context
    header = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) '
                            'AppleWebKit/537.11 (KHTML, like Gecko) '
                            'Chrome/23.0.1271.64 Safari/537.11',
              'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
              'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
              'Accept-Encoding': 'none',
              'Accept-Language': 'en-US,en;q=0.8',
              'Connection': 'keep-alive'}
   req = urllib.request.Request(url=url_page, headers=header) 
   page = urllib.request.urlopen(req) # If timeout is addded, entire execution is
   soup = BeautifulSoup(page, 'html.parser', multi_valued_attributes=None)
   return soup

但是,当在 AWS Lamba 中部署相同的代码(相同的库,相同的环境)时,结果会有所不同,因为我尝试废弃的页面的 HTML 不完整(我想废弃的部分没了)。

我也尝试在本地环境中执行简单的 curl,并且能够获取完整的网页(使用以前的标头),但是当我尝试仅从 AWS Lambda 下载页面 HTML 时 (as cURL is no longer available in Lambda) :

 page = urllib.request.urlopen(req)
 file_test = "/tmp/test1.html"
 with open(file_test, "w") as file1:
     file1.write(str(page.read()))
 client = s3_management.get_s3_client()
 client.upload_file(file_test, "bucket", file_test)

我得到一个不完整的 HTML 版本。

无奈之下,我也尝试过使用 aiohttp 库(带有 asyncio)而不是 urlib.request 来实现异步请求,但结果是一样的:一个不完整的 HTML 页面和与我在本地环境中执行代码时看到的版本不同。

有什么想法吗?

【问题讨论】:

    标签: python amazon-web-services web-scraping python-requests


    【解决方案1】:

    就像一种巫术,和书中描述的很相似Pragmatic thinker,我在写问题的同时有一个“L-mode to R-mode”的时刻。 p>

    我在我的 Lambda 函数中使用了 eu-west-3(巴黎)区域。我将其更改为 us-west-2(俄勒冈州),在 Lambda 中执行的代码开始返回预期结果,而不是废弃的 HTML 的不完整版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-27
      • 2018-09-15
      • 1970-01-01
      • 1970-01-01
      • 2018-06-18
      • 2021-08-04
      • 2022-12-14
      • 2021-02-28
      相关资源
      最近更新 更多