aws lambda使用_如何使用Python和AWS Lambda监视论坛中的关键字

aws lambda使用

在构建ScrapingBee时,我总是每天检查不同的论坛,以帮助人们解决与Web爬网相关的问题并与社区互动。

这对于早期启动非常普遍。 回答潜在客户的问题有很多好处。

首先,您会更好地了解它们,并且可以为产品开发提供思路。

然后,您提供价值 ,这使他们信任您。

有些论坛可以向您发送有关标签关键字的警报,而其他论坛则没有。

今天,我们将看到如何使用AWS Lambda和Python快速创建CRON作业,以检查论坛主题中的关键字。

先决条件

为了搭建我们的项目并将其部署到AWS lambda,我们将使用Serverless框架。

这是一个很棒的项目,使用一个简单的配置文件就可以非常轻松地构建/配置云功能。

它处理许多不同的云(AWS,Google Cloud,Azure ...)和不同的语言。

以下是安装说明: https : //serverless.com/framework/docs/providers/aws/guide/quick-start/

我们将使用非常流行的Python包Requests和BeautifulSoup来解析HTML代码:

pip install requests
 pip install beautifulsoup4
 pip freeze > requirements.txt

如果我们不使用无服务器框架,则需要将依赖项打包到一个Zip中并将其上传到AWS。

感谢Serverless,我们可以使用一个插件来解析requirements.txt文件,并自动将依赖项打包到Lambda层中。

为此:

npm init

接受所有默认值后,将其添加到您的serverless.yml中:

# serverless.yml
plugins:
  - serverless-python-requirements
custom:
  pythonRequirements:
    dockerizePip: non-linux

您可以在此处获取有关此信息的更多信息: https : //serverless.com/blog/serverless-python-packaging/

关键字监控

我们将在IndieHackers.com上监视关键字,这是一个受过引导的创始人的流行论坛。

这是一个简单的代码,它将检查所有标题是否为“ design”:

import json
import requests
from bs4 import BeautifulSoup


def hello (event, context) :
    base_url = "https://www.indiehackers.com/"
    r = requests.get(base_url)
    soup = BeautifulSoup(r.text, 'html.parser' )

    matches = soup.select( 'a.feed-item__title-link' )
    keyword = 'design'
    matching_links = []
    for i in matches:
        if keyword in i.text:
            matching_links.append(base_url + i.get( 'href' ))

    response = {
        "statusCode" : 200 ,
        "body" : matching_links
    }

    return response

现在,我们所要做的就是在匹配关键字的情况下发送Slack通知(或email)。

这真的很容易懈怠,你只需要创建一个应用程序来获得网络挂接网址为解释在这里

json = {"text" : f"Found a topic matching the keyword on Indie Hackers: {matching_links} " }
slack_request = requests.post(
  WEBHOOK_URL, json=json, headers={ "Content-Type" : "application/json" }
)

并以“voilà”为代码。

部署和调用

为了调用您的函数:

serverless invoke -f hello --log

要使用CRON作业自动执行函数调用:

functions:
  hello:
    handler: handler.hello
    events:
      - schedule: rate(1 day)

使用AWS编写时间表表达式的方式有多种,您可以在此处找到详细的文章

现在,取消部署命令:

serverless deploy

就是这样,容易吗?

我希望您喜欢这篇文章,这是对无服务器框架的一些介绍,以及构建这样的简单实用程序脚本有多么容易。

如果您喜欢Web抓取,我只是写了一篇有关可用的各种Web抓取工具的文章,请不要犹豫。

请继续关注有关网络抓取的其他博客文章:)

翻译自: https://hackernoon.com/how-to-monitor-a-forum-for-keywords-using-python-and-aws-lambda-0s3k3y44

aws lambda使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值