Python: RoboBrowser TypeError: 'NoneType'

Python: RoboBrowser TypeError: 'NoneType'

我正在尝试抓取 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