Python:RoboBrowser 类型错误: 'NoneType'

标签 python python-3.x python-requests robobrowser

我正在尝试抓取 Tessco.com 上某些商品的定价信息 我找到了 RoboBrowser 和一些教程。按照教程,我遇到了一个错误,而海报却没有。我不确定需要修改哪些内容来纠正该问题。

代码如下:

import re
import config
from robobrowser import RoboBrowser
br = RoboBrowser(history=True)

br.open("https://www.tessco.com/login")
form = br.get_form()
form['userID'] = config.TESSCO_USERNAME
form['password'] = config.TESSCO_PASSWORD
br.submit_form(form)

查看 Google Chrome 中的检查器,我看到需要用户输入的部分的 ID 为 userIDpassword

我假设 RoboBrowser 查找表单并返回 None 的方式存在问题。

我的错误消息是:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-58-6c3d8fcb718d> in <module>
      1 form = br.get_form()
----> 2 form['userID'] = config.TESSCO_USERNAME
      3 form['password'] = config.TESSCO_PASSWORD
      4 br.submit_form(form)

TypeError: 'NoneType' object does not support item assignment

我很不知道出了什么问题。有什么建议可以指引我正确的方向吗?

最佳答案

https://robobrowser.readthedocs.io/en/latest/api.html#robobrowser.browser.RoboBrowser.get_form

来自他们网站的引用:

Returns: BeautifulSoup tag if found, else None

这意味着 RoboBrowser 无法在该网站上找到表单。

找不到表单,因为 https://www.tessco.com/login 中的表单通过javascript加载。

由于 RoboBrowser 不执行 JavaScript,因此表单从未加载,因此 RoboBrowser 无法找到它。

您可能想尝试类似 selenium 的内容,它实际上运行后台浏览器,而不仅仅是加载 HTML

关于Python:RoboBrowser 类型错误: 'NoneType',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56842427/

相关文章:

python - 使用 Python 3 抓取 YouTube 网页

python - 如何接受python json字典中的任何键?

python - 从 Python 使用 POST 发送文件

python - 使用 python 请求的代理的 407 响应

python - 使用 itertools 来降低四个 "for"stmt 的复杂性?

python - 循环遍历 Python 中的文件夹和包含字符串的文件

python - jupyter 不使用 pyenv 设置的版本

python - 在 Python 中使用 matplotlib 在 semilogy plot 上防止轴采用科学记数法(10 的幂)

python - 日期时间解析错误,格式错误?

python - 使用 requests/urllib3 在每次重试时添加回调函数