我想编写一个python函数,它允许我抓取一个给定URL的网站,该网址将与颤振移动应用程序接口。我已经在python上编写了非常基本的代码,但现在我对如何集成Google Cloud一无所知。非常感谢一些演练帮助。
我的代码模型如下:
import timeago
import pytz
from bs4 import BeautifulSoup
from time import mktime
from datetime import datetime
def Parser(url):
......# URL PARSING
......
......
return domain_name, page_title, clean_txt, timestamp
url = '******************'
file = Parser(url)
print (file[0], file [1], file [2], file [3])
我尝试在网上查看许多示例,其中大多数使用烧瓶。老实说,我不明白烧瓶的用途,以及如何将其用于Google Cloud Functions(或任何云功能(。据我了解,我应该把我的要求.txt文件如下:
timeago
pytz
mktime
bs4
datetime
如果是这样,那么我应该如何定义我的导入(即来自 bs4 导入 BeautifulSoup 等(语句?
另外,如何将这些函数调用到我的颤振应用程序代码中?我有云功能的网址,但不知道如何处理它。我尝试浏览官方文档,但由于缺乏任何输入或输出参数,其中大部分只是"Hello World"代码,几乎没有任何用处(对我来说(。
感谢和欢呼
要解决您的一些查询,请执行以下操作:
老实说,我不明白烧瓶的用途,以及如何将其用于Google Cloud Functions(或任何与此相关的云功能(
有几种方法可以触发云函数,其中一种比较常见的方法是使用 HTTP 触发器。
对于 HTTP 触发器,需要使用 RESTful 端点包装实际函数/业务逻辑Flask
,以便可以通过 HTTP 请求调用函数(后一个操作应由颤振代码执行(。其中一些实际上是由Cloud Functions处理的,你主要需要指定一个包装器方法,将一个flask.Request
对象(本质上是上述HTTP请求的有效载荷(作为调用你的主要业务逻辑/函数的参数,其中flask.Request
对象将是你的参数(例如url
(提供。 然后,您需要在部署云函数时提供此包装器方法(见下文(。
如果是这样,那么我应该如何定义我的导入(即来自 bs4 导入 BeautifulSoup 等(语句?
import
语句按照代码片段照常工作。
如何将这些函数调用到我的 Flutter 应用程序代码中?
您需要从颤振应用代码向云函数的 URL 触发 HTTP 请求。
将事情放在上下文中:
在上面的示例中,您可以将其包装在具有flask.Request
对象的入口点方法周围,如下所示:
import timeago
import pytz
from bs4 import BeautifulSoup
from time import mktime
from datetime import datetime
from flask import escape
def Parser(url):
......# URL PARSING
......
......
return domain_name, page_title, clean_txt, timestamp
def invoke_parser(request):
request_json = request.get_json(silent=True)
file = Parser(escape(request_json['url']))
print (file[0], file [1], file [2], file [3])
函数的变化是,在调用函数时,必须在 HTTP 请求正文中传递url
。
因此,要部署函数,请使用以下命令:
gcloud functions deploy [CLOUD FUNCTION NAME]
--entry-point invoke_parser
--runtime python37
--trigger-http
--entry-point
参数将是要调用的包装方法(我在示例中使用invoke_parser
作为包装方法(。
要调用它,请触发一个 HTTP 请求(这是可以提供Parser
函数的url
参数的地方(,例如:
curl -X POST
"https://YOUR_REGION-YOUR_PROJECT_ID.cloudfunctions.net/FUNCTION_NAME"
-H "Content-Type:application/json"
--data '{"url":"******************"}'
在你的颤振代码中,你需要触发一个等效于上述curl
命令的HTTP请求