【问题标题】:IndexError - Works on Hombrew terminal but not on PythonAnywhereIndexError - 适用于 Hombrew 终端,但不适用于 PythonAnywhere
【发布时间】:2020-06-07 03:41:11
【问题描述】:

大家好,我有一个 python 代码,可以通过设置虚拟环境在我的 hombrew 终端上运行。看起来是这样的

python3 -m venv env
source ./env/bin/activate
(env) python bandcamp_scrape.py

而且效果很好!但是我试图在https://www.pythonanywhere.com/ 上做同样的事情,所以我可以每天自动化脚本它给我奇怪的错误,我不知道如何解决?为什么它可以在我的电脑上运行,但不能在 pythonanywhere 上运行?

03:37 ~ $ python3 -m venv env
03:37 ~ $ source ./env/bin/activate 
(env) 03:37 ~ $ python bandcamp_scrape.py
Traceback (most recent call last):
  File "bandcamp_scrape.py", line 72, in <module>
    forum_login("Yakov", "test")
  File "bandcamp_scrape.py", line 15, in forum_login
    nonce = root.xpath("//input[@type='hidden' and not(@name='hash_passwrd')]")[0]
IndexError: list index out of range

【问题讨论】:

  • 您的 PythonAnwhere 帐户是免费的还是付费的?您要抓取的网站是否在免费帐户的白名单中(如果您使用的是免费帐户)?见pythonanywhere.com/whitelist
  • 我是免费帐户。该网站是我自己的
  • 而我从中抓取的另一个网站来自被列入白名单的 Bandcamp
  • 您的代码试图访问的具体是bandcamp.com,而不是(比如说)www.bandcamp.com?后者不在白名单中。
  • 是的,它的 bandcamp.com

标签: python list


【解决方案1】:

在 pythonanywhere 中执行代码的 IO / 文件系统上下文中,root.xpath("//input[@type='hidden' and not(@name='hash_passwrd')]") 似乎返回一个空列表。

如果我们可以在bandcamp_scrape.py 中看到相关代码,则更容易确定问题的根源,但也许让您走上正轨的提示可能是检查 pythonanywhere shell 是否正确连接到网站,并且如果它接收到的 HTTP 响应是有效的,并且它确实接收到在放入 root 变量之前发出的特定请求的有效 XML 或 HTML 对象。

【讨论】:

    猜你喜欢
    • 2015-01-21
    • 1970-01-01
    • 1970-01-01
    • 2020-08-03
    • 2020-01-13
    • 2018-12-03
    • 2016-05-23
    • 1970-01-01
    • 2017-03-11
    相关资源
    最近更新 更多