我如何 运行 portia spider 的端口?

How can i run a portia spider by its port?

我正在尝试 运行 一个在其 docker 版本中带有 portia 的蜘蛛,但我不想使用像 docker exec ... portiacrawl ... 这样的终端命令来执行蜘蛛。有什么方法可以 运行 已经创建的蜘蛛,通过在其本地主机端口发出请求并将其保存在特定文件夹中?

类似于: https://localhost:9001/execute/spider_name/folder_path

我自己的用法示例:

首先我做的是 运行 容器并离开它 运行ning,因为我不能因为其他原因停止它:

docker run -i -t -d --rm -v <PROJECTS_FOLDER>:/app/data/projects:rw -p 9001:9001 scrapinghub/portia

接下来我执行 portiacrawl:

docker exec <CONTAINER_ID> portiacrawl <PROJECT_NAME_PATH> <SPIDER_NAME> -o /some/path/in/my/pc/<SPIDER_NAME>.json

现在,我想要的是将 docker exec 步骤替换为对 运行ning 本地主机服务器的 som http 请求。

非常感谢您的宝贵时间

是的,您可以通过进行端口映射。启动 docker 容器时,除非您告诉 docker 这样做,否则您不会 public 发布或在内部公开任何端口。

例如:

  • 如果你想在内部公开一个端口(在 docker 网络内部,你需要在 docker 文件中添加 EXPOSE

  • 如果你想发布一个可以通过本地主机或 public ip 访问的 publicly 端口,你可以使用 -p 选项并传递端口,因此在您的情况下它将是这样的:

docker run -p 9001:9001 imagename

上面的命令会告诉 docker 你想要从 9001(使用本地主机或任​​何其他接口)进行端口映射到 9001(在容器内,你可以根据你的实际设置更改端口).

如果你只想将它暴露给本地主机,你可以将命令更改为如下内容:

docker run -p 127.0.0.1:9001:9001 imagename

更多信息请查看the following docs


根据更新后的问题,另一种最安全的方法是在 portiacrawl 中实现 API,可以通过 HTTP 调用它来完成所需的任务,而不是使用 docker exec