在PythonAnywhere?(或Cloud9)上安装Scrapy

qlfbtfca  于 2022-11-09  发布在  Python
关注(0)|答案(2)|浏览(160)

我可以在PythonAnywhere的免费版本上运行Scrapy吗?我已经看过了,但是还没有找到安装说明。
如果它不能在PythonAnywhere的免费级别上运行,是否有其他在线环境可以让我运行Scrapy,而无需在我的计算机上安装Python和Scrapy?
编辑:我的问题只是关于PythonAnywhere,但在寻找问题的答案时,我偶然发现了Cloud9,发现它是一个更可取的替代方案,这在答案中有解释。

roejwanj

roejwanj1#

可以,但是PythonAnywhere上的免费帐户仅限于访问a whitelist of official public APIs上的站点,因此您可能无法访问非API站点。

yqkkidmi

yqkkidmi2#

简短总结:

  • Scrapy预装在PythonAnywhere上,不需要安装。
  • 我找到了一个我更喜欢的选择:我可以在上面安装Scrapy,但是有一个安全问题,对我来说可能不是问题。

====================================
我的问题有三个部分:
1.**我可以在PythonAnywhere的自由级别运行Scrapy吗?**这部分已经得到了回答:是的,但有削弱的限制。
其他两个部分还没有得到回答,但我已经找到了一些答案,并将在这里分享他们。
1.**还有哪些在线环境可以让我运行Scrapy而无需在计算机上安装Python和Scrapy?**我还没有找到直接的答案,但免费教程网站Python for Everybody(“Py 4 E”)有一个页面Setting up your Python Development Environment,其中列出了四种在线Python环境。它提供了一个简短的tutorial on PythonAnywhere,然后只提供了其他三种环境的链接:小饰品、Cloud9和CodeAnywhere。
这四个环境中没有一个提到要在它们上面运行Scrapy。通过更多的研究,我确实找到了如何在PythonAnywhere中使用Scrapy,我将在下面解释。在其他三个环境中,Cloud9是Amazon的AWS套件的一部分,这是一组复杂的软件工具,我以前也使用过它的其他部分。基于这一点,我认为它也支持Scrapy。我也检查了一下。我已经把它的结果加在下面作为我的问题的新的第四部分。
1.现在,我问题的主要部分:**如何在PythonAnywhere上安装Scrapy?**答案是:

*您不需要,它已经安装好了!

令人惊讶的是,PythonAnywhere的优秀文档没有提到这一点。我是通过下面的说明找到这一点的,我希望这些说明能引导我安装Scrapy:

  • 首先,由于我是Python新手(但不是编程新手),我浏览了Py 4 E的tutorial on PythonAnywhere,这确实是Python的一个快速入门,让我写了一个简单的程序,告诉我使用Bash Unix shell而不是Python解释器(用“$”代替“〉〉〉”),并让我将一个简单的程序保存到一个文件中。
  • 接下来,我去了Scrapy的installation instructions。它有一句很棒的台词:...“如果你已经熟悉Python包的安装,你可以从PyPI安装Scrapy和它的依赖项:pip install Scrapy“。当然,它并没有跟着说我不熟悉该怎么做。唉!
  • 在那之后,我不知怎么地找到了Python关于Installing Packages的官方指令,它以解释“package”的意思是“要安装的软件包”开始,所以我想这可能包括Scrapy。所以我运行了那里的指令,大约运行到一半的时候,它告诉我运行:
python3 -m pip install "SomeProject"

(* 下面脚注介绍了该命令的语法)
说明书上说“SomeProject”应该是包含在Python Package Index中的一个项目,所以我去那里搜索了Scrapy。它给了我一个681个名称中带有“scrapy”的项目的列表,其中一些看起来可能是Scrapy本身的各种版本。没有一个项目只叫“Scrapy”。但是上面引用的Scrapy说明说只使用这个名字。所以我屏住呼吸输入:

python3 -m pip install Scrapy

猜猜我得到了什么?PythonAnywhere告诉我:

Requirement already satisfied: Scrapy in /usr/local/lib/python3.9/site-packages (2.5.0)

接下来是几十行,都以“Requirement already satisfied”开头,我认为这是Scrapy所需的依赖项,所有这些都已经存在并准备就绪。

  • 所以,嗯,Scrapy已经在那里了?为了验证这是否属实,我去了Scrapy网站上的tutorial。它说的第一件事是使用以下命令创建一个项目:
scrapy startproject tutorial

我输入了这个命令,PythonAnywhere告诉我它已经成功地创建了一个新项目。由于这是一个Scrapy命令,我得出结论,是的,的确,我已经在PythonAnywhere上安装并运行了Scrapy。不需要安装!
1.**Cloud9怎么样?**正如我在第2部分的回答中所说的,当我发现Cloud9时,我很感兴趣,因为它是Amazon Web Services(“AWS”)的一部分。我以前使用过AWS的其他部分,发现它们成熟、复杂、功能强大、文档齐全。它们也非常经济。
AWS是一个由亚马逊运营的商业系统。它根据使用情况收费,没有最低限额,少量使用是免费的。pricing page for Cloud9显示它也不例外。Cloud9本身是免费使用的,但使用它需要调用其他收费的AWS资源。

定价页面给出了以下示例:“如果您使用默认设置,在一个月内的20天内每天运行IDE 4小时,并使用30分钟的自动休眠设置,则每月使用90小时的费用将是...... $2.05”。这还不到每月最低cost of PythonAnywhere的一半。(如answer by Giles Thomas中所述,PythonAnywhere的免费级别对Scrapy来说不是很有用。)我不确定Cloud9示例中的使用量与PythonAnywhere的$5/mo服务所允许的使用量相比如何,但是我的使用量会比这两种都少很多,所以我希望我使用Cloud9的成本会很低,甚至可能是零。此外,如果我一年只在一个项目中使用Scrapy几次,那么在PythonAnywhere中,我必须在项目之间关闭我的帐户才能停止收费,但是AWS在我不使用它的时候不会向我收费。这样我就可以在项目之间保持帐户而不需要任何成本。
因此,基于我使用过的AWS模块的质量和较低的使用成本,我对Cloud9作为替代方案非常感兴趣。
我发现我可以在里面用Scrapy并不感到惊讶。
为了弄清楚这一点,我很快就放弃了网页说明,转而从documentation page下载了一份PDF格式的综合用户指南。综合= 595页!但它组织得非常好,交叉引用,所以我能够通过阅读大约20页来了解我所需要的,其中包括一个关于使用GUI环境的教程(第29页到第38页)和另一个关于在Cloud9中使用Python的教程(第423页到第7页)。
在第二个教程中,我运行了:

  • python3 --version,以确定Python已经安装,版本为3.7.10。
  • python -m pip --version以确定pip版本20.2.2是否正在运行。

在那个教程之后,我准备看看Scrapy是否在那里。那时我已经学会了pip show,所以我运行:

  • python -m pip show Scrapy

答案是否定的:

  • WARNING: Package(s) not found: Scrapy

所以我重复了之前在PythonAnywhere中执行的命令:

  • python3 -m pip install Scrapy

这一次,很少有“要求已经满足“,而是有很多“收集...下载“,然后是“安装收集的包”,然后是“成功安装”,还有一个长长的列表,其中包括Scrapy-2.6.1。
我重复了python -m pip show Scrapy,得到了几行输出,告诉我Scrapy 2.6.1已经安装。最后,我运行了之前在PythonAnywhere中运行过的相同测试,这是Scrapy官方教程中的第一条指令:

scrapy startproject tutorial

并得到与以前相同的输出,告诉我项目已经创建。
答对了!我让Scrapy在Cloud9上运行。
从消极的方面来说,这里有一个问题。AWS有两个级别的登录权限,称为root用户和IAM。为了安全起见,我应该以IAM用户的身份运行Cloud9,但这样登录会有问题。我发布了一个question on SO about that,但在等待答案的时候,我继续以root用户的身份使用Cloud9。在此过程中,我心领神会:
警告:使用root权限运行pip install通常不是一个好主意。
这个警告还附带了一个替代命令的建议,但这个命令没有意义,而且在我尝试使用时也不起作用。所以我不确定我在这里所做的事情对我的AWS账户的安全性造成了多大的破坏。我的工作并不保密,所以安全性可能不是问题。但我仍然想弄清楚如何以IAM用户的身份继续操作,并清理我以root用户身份所做的操作可能造成的任何损害,如果有人知道这一点,请回答上一段中与之相关的SO问题。
所以现在我已经在Cloud9中运行Scrapy了,我将去看看它是否能得到我需要的数据。如果Cloud9有任何意外,我将在这里做另一个编辑,无论是(a)不能做什么,或者(b)导致意外的收费。

(*)关于python3 -m pip install "SomeProject"语法的脚注:因为我在一个叫做PythonAnywhere的程序中工作,我很想把它当成一个Python命令。但是我必须记住,在PythonAnywhere中,我是在Bash,一个Unix shell中工作的。所以Python3是一个Unix命令。我没有找到这个命令的文档,但是找到了一个命令,它可能是基于Python的。文档中说:“-m module-name搜索指定的模块并将相应的.py文件作为脚本运行。”这意味着pip是一个用Python编写的Unix模块,用于安装Python包。那么install <project name>pip模块的一个参数。(如果我说错了,请有人纠正我。)

相关问题