==================================== 我的问题有三个部分: 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命令,我得出结论,是的,的确,我已经在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)导致意外的收费。
2条答案
按热度按时间roejwanj1#
可以,但是PythonAnywhere上的免费帐户仅限于访问a whitelist of official public APIs上的站点,因此您可能无法访问非API站点。
yqkkidmi2#
简短总结:
====================================
我的问题有三个部分:
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:
pip install Scrapy
“。当然,它并没有跟着说我不熟悉该怎么做。唉!(* 下面脚注介绍了该命令的语法)
说明书上说“SomeProject”应该是包含在Python Package Index中的一个项目,所以我去那里搜索了Scrapy。它给了我一个681个名称中带有“scrapy”的项目的列表,其中一些看起来可能是Scrapy本身的各种版本。没有一个项目只叫“Scrapy”。但是上面引用的Scrapy说明说只使用这个名字。所以我屏住呼吸输入:
猜猜我得到了什么?PythonAnywhere告诉我:
接下来是几十行,都以“Requirement already satisfied”开头,我认为这是Scrapy所需的依赖项,所有这些都已经存在并准备就绪。
我输入了这个命令,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在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
模块的一个参数。(如果我说错了,请有人纠正我。)